Maximum Product Subarray | Leetcode 152 solution

 152. Maximum Product Subarray


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.

 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:

  • 1 <= nums.length <= 2 * 104
  • -10 <= nums[i] <= 10
  • The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer.

Solution : 

class Solution {
public:
    int solve(vector<int>&nums, int i , int size, int product , unordered_map<int ,unordered_map<int, int> >& map1)
    {
        if(i >= size)
        {
              return product;
        }
        if(map1[i].count(product))
        {
            return map1[i][product];
        }
        return map1[i][product] = max({solve(nums , i+1, size, nums[i]*product, map1 ), solve(nums, i+1, size, nums[i], map1 ), product });
    }
    int maxProduct(vector<int>& nums) {
     
        unordered_map<int , unordered_map<int, int >>map1;
        return solve(nums , 1, nums.size(), nums[0], map1 );
     
    }
};



Comments