152. Maximum Product Subarray

来源:互联网 发布:求对数据入门分析 编辑:程序博客网 时间:2024/06/07 00:15

分析法案:点击打开链接

最小的负数乘以负数是可以变成最大的乘积,因为是可以当个值成为一个字串的所以有和单个值的比较。有两个乘积记录子序列的乘积,从最大的正值和最小的负值去记录更新。

class Solution {public:    int maxProduct(vector<int>& nums) {        int re;        if(nums.empty()){            return 0;        }        int len = nums.size();        int remax = nums[0];        if(len == 1){            return nums[0];        }                int maxlast = nums[0];        int minlast= nums[0];        int maxCur = nums[0];        int minCur = nums[0];                for(int pre = 1 ; pre < len ; pre++){            maxCur = max(max(maxlast*nums[pre],minlast*nums[pre]),nums[pre]);            minCur = min(min(minlast*nums[pre],maxlast*nums[pre]),nums[pre]);            minlast = minCur;            maxlast = maxCur;            remax = max(maxCur , remax);        }        return remax;    }};


原创粉丝点击