leetcode152_乘积最大子数组
public int maxProduct(int[] nums) {
int len = nums.length, ans = nums[0];
int[] dpMax = new int[len], dpMin = new int[len];
dpMax[0] = nums[0];
dpMin[0] = nums[0];
for(int i = 1; i < len; i++) {
dpMin[i] = Math.min(dpMax[i-1] * nums[i], Math.min(dpMin[i-1] * nums[i], nums[i]));
dpMax[i] = Math.max(dpMax[i-1] * nums[i], Math.max(dpMin[i-1] *nums[i], nums[i]));
ans = Math.max(ans, dpMax[i]);
}
return ans;
}

浙公网安备 33010602011771号