您的位置:首页 > 其它

leetcode 152 Maximum Product Subarray

2015-09-22 18:17 375 查看
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.

算法思想:类似,maximum subarray,注意负数与负数相乘变成正数。

代码

int maxProduct(vector<int>& nums) {
int max_ending_here_positive = nums[0]>0 ? nums[0] : 1;
int max_ending_here_negative = nums[0]<0 ? nums[0] : 1;

int max_so_far=nums[0];
for(int i=1;i<nums.size();i++){
int mp=max_ending_here_positive;
int mn=max_ending_here_negative;
int max_tmp  = max(mp*nums[i], mn*nums[i]);
max_ending_here_positive = max(max_tmp, 1);
max_ending_here_negative = min(min(mp*nums[i], mn*nums[i]), 1);
max_so_far = max(max_so_far,max_tmp);

}
return max_so_far;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  乘积最大子数组