152. Maximum Product Subarray (Array)
因为有负数,所以最小的也有可能变成最大,因此也要记录最小的cmin
99%:
1 class Solution { 2 public int maxProduct(int[] nums) { 3 int r = nums[0]; 4 int cmax = r, cmin = r; 5 for(int i = 1; i < nums.length; i++) { 6 if(nums[i] < 0) { 7 int tmp = cmax; 8 cmax = cmin; 9 cmin = tmp; 10 } 11 cmax = Math.max(nums[i], cmax * nums[i]); 12 cmin = Math.min(nums[i], cmin * nums[i]); 13 r = Math.max(r, cmax); 14 } 15 return r; 16 } 17 }