1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public int maxProduct(int[] nums) { int[] maxProducts = new int[nums.length]; int[] minProducts = new int[nums.length];
maxProducts[0] = minProducts[0] = nums[0]; int maxProduct = maxProducts[0]; for (int i = 1; i < nums.length; i++) { maxProducts[i] = Math.max(Math.max(nums[i] * maxProducts[i - 1], nums[i] * minProducts[i - 1]), nums[i]); minProducts[i] = Math.min(Math.min(nums[i] * maxProducts[i - 1], nums[i] * minProducts[i - 1]), nums[i]); maxProduct = Math.max(maxProduct, maxProducts[i]); }
return maxProduct; } }
|
References
152. Maximum Product Subarray