152. Maximum Product Subarray(unsolved)

来源:互联网 发布:人工智能视觉识别 编辑:程序博客网 时间:2024/06/08 10:14

Find the contiguous subarray within an array (containing at least one number) which has the largest product.

For example, given the array [2,3,-2,4],
the contiguous subarray [2,3] has the largest product = 6.

解答:
这个问题解决方案就是
维护一个最大值一个最小值。那么考虑一个新的值时,最大的可能是该值本身,或者是该值乘以最大值,由于可能是负数,那么还可能是最小值乘以该值。最小值同理,如此更新。如果改为
res=min(res,minnum);
那么结果可以取最小值

class Solution {public:    int maxProduct(vector<int>& nums) {        if(nums.size()==0) return 0;        int res=nums[0],minnum=nums[0],maxnum=nums[0];        for(int i=1;i<nums.size();i++)        {            int tmax=maxnum,tmin=minnum;            maxnum=max(max(nums[i],tmax*nums[i]),tmin*nums[i]);            minnum=min(min(nums[i],tmax*nums[i]),tmin*nums[i]);            res=max(res,maxnum);        }        return res;    }};
0 0
原创粉丝点击