LeetCode 1464. 数组中两元素的最大乘积
题目描述
思路分析
解法一:一次扫描(推荐)
核心思路:
- 维护数组中最大和次大值。
- 答案为
(max1 - 1) * (max2 - 1)。
复杂度分析:
- 时间复杂度:O(n),其中 n 表示数组长度。
- 空间复杂度:O(1)。
class Solution {
public int maxProduct(int[] nums) {
int max1 = 0;
int max2 = 0;
for (int num : nums) {
if (num > max1) {
max2 = max1;
max1 = num;
} else if (num > max2) {
max2 = num;
}
}
return (max1 - 1) * (max2 - 1);
}
}
func maxProduct(nums []int) int {
max1, max2 := 0, 0
for _, num := range nums {
if num > max1 {
max2 = max1
max1 = num
} else if num > max2 {
max2 = num
}
}
return (max1 - 1) * (max2 - 1)
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 1464. 数组中两元素的最大乘积 | 简单 | 一次扫描 |
| 215. 数组中的第K个最大元素 | 中等 | 选择算法 |
| 628. 三个数的最大乘积 | 简单 | 扫描 |
| 414. 第三大的数 | 简单 | 扫描 |
| 1337. 矩阵中战斗力最弱的 K 行 | 简单 | 计数 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!