您的位置:首页 > 其它

Leetcode Maximum Product Subarray

2015-10-21 02:10 465 查看
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
.

解题思路:

This is similar to maximum subarray. Instead of sum, the sign of number affect the product value.

When iterating the array, each element has two possibilities: positive number or negative number. We need to track a minimum value, so that when a negative number is given, it can also find the maximum value. We define two local variables, one tracks the maximum and the other tracks the minimum.

Java code:

public class Solution {
public int maxProduct(int[] nums) {
int result = nums[0];
int max = nums[0];
int min = nums[0];
for(int i = 1; i< nums.length; i++) {
int temp = max;
max = Math.max(Math.max(nums[i], nums[i] * temp), nums[i] * min);
min = Math.min(Math.min(nums[i], nums[i] * temp), nums[i] * min);
result = Math.max(max, result);
}
return result;
}
}


Reference:

1. http://www.programcreek.com/2014/03/leetcode-maximum-product-subarray-java/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: