33 lines
869 B
Java
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
|
|
|