Loading

leetcode-1464. 数组中两元素的最大乘积

1464. 数组中两元素的最大乘积

图床:blogimg/刷题记录/leetcode/1464/

刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html

题目

image-20220826104731788

思路

因为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)\),仅使用常量空间

补充

posted @ 2022-08-26 10:56  Geaming  阅读(15)  评论(0编辑  收藏  举报