Maximum Product Subarray

Tags : array, leetcode, cpp, medium

Given an integer array nums, find a contiguous non-empty subarray within the array that has the largest product, and return the product.

It is guaranteed that the answer will fit in a 32-bit integer.

A subarray is a contiguous subsequence of the array.

Examples #

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 #

Solutions #

class Solution {
public:
    int maxProduct(vector<int>& nums) {
      int res = INT_MIN, l = 1, r = 1;
      int n = nums.size();
      for(int i = 0; i<n; i++){
        l = l*nums[i];
        r = r*nums[n-1-i];
        res = max(res, max(l, r));
        if(l==0) l=1;
        if(r==0) r=1;
      }
      return res; 
    }
};