151 DSA Problem journey
GAURAV YADAV
2 min read
Q4:)Given an integer array, 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 :
Input: nums = [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.
Solution:
class Solution {
public:
int maxProduct(vector<int>& nums) {
int ct=1;
int mt=INT_MIN;
for(int i=0;i<nums.size();i++){
ct=ct*nums[i];
mt=max(ct,mt);
if(ct==0)
ct=1;
}
ct=1;
for(int i=nums.size()-1;i>=0;i--){
ct=ct*nums[i];
mt=max(ct,mt);
if(ct==0)
ct=1;
}
return mt;
}
};
Explantion:
.)Initialize two variables: ct to 1 (current product) and mt to INT_MIN (maximum product).
.)Iterate through the elements of the nums vector from left to right.
>Update ct by multiplying it with the current element.
>Update mt to the maximum value between the current product (ct) and the maximum product encountered so far (mt).
>If the current product becomes zero, reset ct to 1 to start calculating a new product.
.)Reset ct to 1.
.)Iterate through the elements of the nums vector from right to left.
>Update ct by multiplying it with the current element.
>Update mt to the maximum value between the current product (ct) and the maximum product encountered so far (mt).
>If the current product becomes zero, reset ct to 1 to start calculating a new product.
.)Return the final maximum product (mt).
>This code efficiently calculates the maximum product of subarrays in the given vector.
If a subarray has a zero, the code starts calculating a new product from the next element.
If anyone have better solution so please comment:)
11
Subscribe to my newsletter
Read articles from GAURAV YADAV directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
GAURAV YADAV
GAURAV YADAV
Experienced Full Stack Developer with proficiency in comprehensive coding skills, adept at crafting end-to-end solutions.