https://oj.leetcode.com/problems/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.
int a[]; minVal, maxVal : 是以a[i]为结尾的连续subarray的最大值和最小值。
初始值的设定: minVal = maxVal = a[0];
迭代更新的方法:
for each a[i] :
temp1 = a[i] * minVal; temp2 = a[i] * maxVal;
maxVal = max(a[i], max(temp1, temp2));
minVal = min(a[i], min(temp1, temp2));
int maxProduct(int a[], int n) /* subarray 需要连续 */
{
int maxVal = a[0];
int minVal = a[0];
int result = a[0];
if (n == 1)
{
return maxVal;
}
for (int i = 1; i < n; i++)
{
int temp1 = maxVal * a[i];
int temp2 = minVal * a[i];
maxVal = max(a[i], max(temp1, temp2));
minVal = min(a[i], min(temp1, temp2));
result = max(maxVal, result);
}
return result;
}