← All problems

152. Maximum Product Subarray

MediumOpen on LeetCodeProblem statement

Problem Statement

152. Maximum Product Subarray

Medium


Given an integer array nums, find a subarray that has the largest product, and return the product.

The test cases are generated so that the answer will fit in a 32-bit integer.

Note that the product of an array with a single element is the value of that element.

 

Example 1:

Input: nums = [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.

Example 2:

Input: nums = [-2,0,-1]
Output: 0
Explanation: The result cannot be 2, because [-2,-1] is not a subarray.

 

Constraints:

Java

Source file
class Solution {
    public int maxProduct(int[] nums) {
        int n = nums.length, max = nums[0], min = nums[0], ans = nums[0];
        for (int i = 1; i < n; i++) {
            int curr = nums[i];
            if (curr < 0) {
                int temp = max;
                max = min;
                min = temp;
            }
            max = Math.max(curr, max * curr);
            min = Math.min(curr, min * curr);
            ans = Math.max(ans, max);
        }
        return ans;
    }
}