0
点赞
收藏
分享

微信扫一扫

152. Maximum Product Subarray

棒锤_45f2 2022-08-03 阅读 29


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.

class Solution {
public int maxProduct(int[] nums) {
int[] max = new int[nums.length];
int[] min = new int[nums.length];

min[0] = max[0] = nums[0];
int result = nums[0];
for (int i = 1; i < nums.length; i++) {
min[i] = max[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]);
}

result = Math.max(result, max[i]);
}

return result;
}
}

class Solution {
public int maxProduct(int[] nums) {
int[] max= new int[a.length];
int[] min = new int[a.length];
max[0]=a[0];
min[0]=a[0];
for(int i=1;i<a.length;i++){
max[i]=Math.max(a[i]*max[i-1],Math.max(a[i]*min[i-1],a[i]));
min[i]=Math.min(a[i]*max[i-1],Math.min(a[i]*min[i-1],a[i]));
}
int ans=Integer.MIN_VALUE;
for(int x:max) {
ans=Math.max(x,ans);
}
return ans;
}
}


举报

相关推荐

0 条评论