//由于负数*负数的结果可能比原值还大,所以要记录一个max还要记录一个min
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n=nums.size();
if(n<1)
return 0;
if(n==1)
return nums[0];
int minLast=nums[0];
int maxLast=nums[0];
int minCur;
int maxCur;
int product=nums[0];
for(int i=1;i<n;i++)
{
maxCur=max(nums[i],max(maxLast*nums[i],minLast*nums[i]));
minCur=min(nums[i],min(maxLast*nums[i],minLast*nums[i]));
maxLast=maxCur;
minLast=minCur;
product=max(product,maxCur);
}
return product;
}
};
[leetcode]152. Maximum Product Subarray
最新推荐文章于 2022-05-22 17:22:44 发布