152. Maximum Product Subarray

来源:互联网 发布:淘宝店铺添加音乐 编辑:程序博客网 时间:2024/04/23 15:17

Problem

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.

Solution


维护一个到当前元素的前一个的最大值和最小值就好了,

开始有一个bug  : 应该用 tempCurMax 来临时储存下,否则计算 curMin时就算错了。

class Solution {public:    int maxProduct(vector<int>& nums) {        const int N = nums.size();        if(N == 0) return 0;                int curMax = nums[0], curMin = nums[0];        int rst = nums[0];        for( int i = 1; i < N ; i++){            int tempCurMax = curMax;            curMax = max( max( nums[i], nums[i]*curMax), nums[i]*curMin);            rst = max( rst, curMax);                        curMin = min( min( nums[i], nums[i]*tempCurMax),nums[i]*curMin );        }        return rst;    }};


0 0
原创粉丝点击