public class Solution {
public int maxProduct(int[] nums) {
int[] max = new int[nums.length];
int[] min = new int[nums.length];
max[0] = nums[0];
min[0] = nums[0];
int result = nums[0];//in case of: nums.length == 1
for (int i = 1; i < nums.length; i++) {
max[i] = nums[i];
min[i] = nums[i];
if (nums[i] > 0) {
max[i] = Math.max(max[i], max[i - 1] * nums[i]);
min[i] = Math.min(min[i], min[i - 1] * nums[i]);
} else if (nums[i] < 0) {
max[i] = Math.max(max[i], min[i - 1] * nums[i]);
min[i] = Math.min(min[i], max[i - 1] * nums[i]);
}
//nums[i] == 0 -> initialize: max[i] = min[i] = 0.
result = Math.max(result, max[i]);
}
return result;
}
}
Maximum Product Subarray
最新推荐文章于 2020-02-02 22:22:46 发布