152. Maximum Product Subarray
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n = nums.size();
if(n == 0) return 0;
if(n == 1) return nums[0];
int maxP = nums[0];
for(int i = 1, dmin = nums[0], dmax = nums[0]; i < n; i++){
if(nums[i] < 0)
swap(dmin, dmax);
dmin = min(nums[i], dmin*nums[i]);
dmax = max(nums[i], dmax*nums[i]);
maxP = maxP > dmax? maxP: dmax;
}
return maxP;
}
};Last updated
Was this helpful?