[数组]leetcode152:乘积最大子序列(medium)

题目:
[数组]leetcode152:乘积最大子序列(medium)_第1张图片
题解:

使用两个变量a、b,a用来记录以 nums[i-1] 结尾的乘积最小值,b用来记录以nums[i-1] 结尾的乘积最大值,Max每次取b与上次的Max中的最大值即可。

代码如下:

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        int n=nums.size();
        //a记录以 nums[i-1] 结尾的乘积最小值,b记录以nums[i-1] 结尾的乘积最大值
        int a=1,b=1;
        int Max=INT_MIN;
        for(int i=0;i<n;++i)
        {
            int aa=a*nums[i];
            int bb=b*nums[i];
            
            a=min(nums[i],min(aa,bb));
            b=max(nums[i],max(aa,bb));
            
            Max=max(Max,b);
        }
        return Max;
    }
};

你可能感兴趣的:(leetcode刷题,#,数组)