LEETCODE SERIES || DAY 10 || (152) Maximum Product Subarray

1–2 minutes

read

Day 10 Leet code series, today we will be picking the problem Maximum Product Subarray (https://leetcode.com/problems/maximum-product-subarray/).

Given an integer array nums, find a contiguous non-empty subarray within the array 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.

subarray is a contiguous subsequence of the array.

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.

Kadane’s algorithm modification

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        int maxEndingHere= nums[0];
        int minEndingHere= nums[0];
        int maxSoFar = nums[0];
        for(int i=1;i<nums.size();i++){
            int temp = max({nums[i], nums[i] * maxEndingHere, nums[i] * minEndingHere});
            minEndingHere = min({nums[i], nums[i] * maxEndingHere, nums[i] * minEndingHere});
            maxEndingHere = temp;
            maxSoFar = max(maxSoFar, maxEndingHere);
        }
        return maxSoFar;
    }
};

Leave a comment