[leetcode]152. Maximum Product Subarray
//由于负数*负数的结果可能比原值还大,所以要记录一个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;
        
    }
};

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lady_lili/article/details/52346209
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

[leetcode]152. Maximum Product Subarray

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭