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
.
1. 考虑到array可能只有一个数的情况
2. 由于有正数、负数之分,所以必须记录当前的最大与最小值
3. 相乘之后的最大最小值还需每次与A[i]做比较,以便做出更新。
class Solution {
public:
int maxProduct(int A[], int n) {
int max,min,ans;
//int result;
max = A[0];
min = A[0];
ans = A[0];
if(n == 1) return A[0];
else
{
for(int i = 1;i < n; i++)
{
max = max * A[i];
min = min * A[i];
if(max < min)
{
int temp = max;
max = min;
min = temp;
}
if(max < A[i])
{
max = A[i];
}
if(min > A[i])
min = A[i];
if(ans < max)
ans = max;
}
return ans;
}
}
};
}
};