码迷,mamicode.com
首页 > 其他好文 > 详细

1 Maximum Product Subarray_Leetcode

时间:2014-10-12 17:19:08      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   ar   for   sp   div   on   log   

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.

 

Since two negative numbers may multiply and get a large number, I need to track the minimum number of each position in the sequence.

At each point, the maximum can be obtained by three numbers:

1. A[i]

2. A[i] * curmax

3. A[i] * curmin

Similar as the minimum update.

 

FIRST TRY ERROR:

I should use temp variable to store the curmax, since the update of curmin use the previous value of curmax.

 

Code:

class Solution {
public:
    int maxProduct(int A[], int n) {
        if(n == 0 || A == NULL) return 0;
        int curmax = A[0], curmin = A[0];
        int res = A[0];
        
        for(int i = 1; i < n; i++)
        {
            int tmpmax = curmax, tmpmin = curmin;   // take care, curmax is used when calc curmin, so do not update
            curmax = max(max(A[i], A[i]*tmpmax), A[i]*tmpmin);
            curmin = min(min(A[i], A[i]*tmpmax), A[i]*tmpmin);
            if(curmax > res) res = curmax;
        }
        return res;
    }
};

  

  

1 Maximum Product Subarray_Leetcode

标签:blog   io   os   ar   for   sp   div   on   log   

原文地址:http://www.cnblogs.com/avril/p/4020557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!