AlgoMaster Logo

152. Maximum Product Subarray

nums=[2, 3, -2, 4]
1public int maxProduct(int[] nums) {
2    // Initialize result and products
3    int result = nums[0];
4    int maxProduct = nums[0];
5    int minProduct = nums[0];
6
7    for (int i = 1; i < nums.length; i++) {
8        // Store current max before updating
9        int tempMax = maxProduct;
10
11        // Calculate three candidates
12        maxProduct = Math.max(nums[i], Math.max(maxProduct * nums[i], minProduct * nums[i]));
13        minProduct = Math.min(nums[i], Math.min(tempMax * nums[i], minProduct * nums[i]));
14
15        // Update global result
16        result = Math.max(result, maxProduct);
17    }
18
19    return result;
20}
0 / 17
23-24