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、maxDP = max(maxDP*nums[n+1], nums[i+1], minDP*nums[n+1]);
2、minDP = min(maxDP*nums[n+1], nums[i+1], minDP*nums[n+1]);
3、max = max(max, maxDP);
从0开始,代码如下:
public class Solution {
public int maxProduct(int[] nums) {
if (nums.length == 0 || nums == null) {
return 0;
}
int minDP = nums[0], maxDP = nums[0], max = nums[0];
for (int i = 1; i < nums.length; i ++) {
int premaxDP = maxDP;
maxDP = Math.max(Math.max(maxDP * nums[i], nums[i]), minDP * nums[i]);
minDP = Math.min(Math.min(premaxDP * nums[i], nums[i]), minDP * nums[i]);
max = Math.max(max, maxDP);
}
return max;
}
}