leetcode-1464. 数组中两元素的最大乘积
1464. 数组中两元素的最大乘积
图床:blogimg/刷题记录/leetcode/1464/
刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html
题目
思路
因为nums[i]>=1
即全为正整数,该题转换成求数组内的最大值和次大值。
解法
class Solution {
public:
int maxProduct(vector<int>& nums) {
int maxVal = 0;
int subMaxVal = 0;
for (int i = 0;i!=nums.size();i++){
if (nums[i] > maxVal)
{
subMaxVal = maxVal;
maxVal = nums[i];
}
else if (nums[i]>subMaxVal){
subMaxVal = nums[i];
}
}
return (maxVal-1)*(subMaxVal-1);
}
};
- 时间复杂度:\(O(n)\),其中\(n\)为数组\(nums\)的长度,需要遍历一遍数组
- 空间复杂度:\(O(1)\),仅使用常量空间