您的位置:首页 > 其它

LeetCode:Maximum Product Subarray

2015-09-17 20:51 351 查看
标题叙述性说明:

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 Solution::maxProduct(int A[],int n)
{
    if(n == 1)
        return A[0];
    int max_temp = A[0];
    int min_temp = A[0];
    int result = A[0];
    int i;
    for(i = 1;i < n;i++)
    {
        int max_temp2 = max_temp * A[i];
        int min_temp2 = min_temp * A[i];
        max_temp = max(max_temp2,max(min_temp2,A[i]));
        min_temp = min(min_temp2,min(max_temp2,A[i]));
        if(max_temp > result)
            result = max_temp;
    }
    return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: