/* * @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