Maximum Product Subarray

来源:互联网 发布:网络动画视频 编辑:程序博客网 时间:2024/06/17 23:35
fa看了参考,想法快到了


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


和max subarray题一样,只不过需要再保存最小值

class Solution:    # @param A, a list of integers    # @return an integer    def maxProduct(self, A):        if len(A)==0:            return 0        if len(A)==1:            return A[0]                    max_local = min_local = result = A[0];                    for i in range(1,len(A)):            new_max = max(max(A[i]*max_local,A[i]),A[i]*min_local)            new_min = min(min(A[i]*max_local,A[i]),A[i]*min_local)            result = max(result,new_max)            max_local, min_local = new_max,new_min                return result            


c++

class Solution {public:    int maxProduct(int A[], int n) {        if(A==NULL || n==0) return 0;        if(n==1) return A[0];                int max_local = A[0], min_local = A[0], result = A[0];        for (int i=1;i<n;i++){            int new_max = max(max(A[i],A[i]*max_local),A[i]*min_local);            int new_min = min(min(A[i],A[i]*max_local),A[i]*min_local);            result = max(result, new_max);            max_local = new_max;            min_local = new_min;        }                return result;            }};



0 0
原创粉丝点击