首页 > 代码库 > Maximum Product Subarray

Maximum Product Subarray

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.

最直接了当的方法,当然是暴力穷举,但是是无法通过测试的。以下给出了O(n)时间复杂度的解决方法,C++实现。

class Solution {public:    int maxProduct(int A[], int n) {            int nMaxPro = A[0];            int max_tmp = A[0];            int min_tmp = A[0];            for(int i = 1; i< n; ++i){                int a = A[i] * max_tmp;                int b = A[i] * min_tmp;                max_tmp = (( a > b ? a : b ) > A[i]) ? ( a > b ? a : b ) : A[i];                min_tmp = (( a < b ? a : b ) < A[i]) ? ( a < b ? a : b ) : A[i];                nMaxPro = (nMaxPro > max_tmp) ? nMaxPro : max_tmp;            }            return nMaxPro;    }};

Maximum Product Subarray