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.
A 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