152. Maximum Product Subarray
维持三个变量,localMax, localMin, global.
需要注意的是更细localMax/localMin的时候,后更新的那个需要先更新的那个的原始值,所以需要存一下
1 public int maxProduct(int[] nums) { 2 if(nums.length == 0) { 3 return 0; 4 } 5 int localMax = nums[0]; 6 int localMin = nums[0]; 7 int global = nums[0]; 8 for(int i = 1; i < nums.length; i++) { 9 int localMaxTemp = localMax; 10 localMax = Math.max(nums[i], Math.max(nums[i] * localMax, nums[i] * localMin)); 11 localMin = Math.min(nums[i], Math.min(nums[i] * localMaxTemp, nums[i] * localMin)); 12 global = Math.max(localMax, global); 13 } 14 return global; 15 }