Files
leetcode/152.maximum-product-subarray.java
2025-10-31 11:06:08 +08:00

33 lines
869 B
Java

/*
* @lc app=leetcode id=152 lang=java
*
* [152] Maximum Product Subarray
*/
// @lc code=start
class Solution {
public int maxProduct(int[] nums) {
int min = 1, max = 1, r = nums[0], curMax, curMin;
for(int i = 0; i< nums.length; i++) {
if(nums[i] == 0) {
max = min = 0;
r = Math.max(r, 0);
} else if(nums[i] > 0) {
curMax = Math.max(nums[i], max*nums[i]);
curMin = Math.min(nums[i], min*nums[i]);
max = curMax;
min = curMin;
} else {
curMax = Math.max(min * nums[i], nums[i]);
curMin = Math.min(max*nums[i], nums[i]);
max = curMax;
min = curMin;
}
r = Math.max(max, r);
}
return r;
}
}
// @lc code=end