Maximum Product Subarray
Thoughts
Code
/*
* @lc app=leetcode id=152 lang=cpp
*
* [152] Maximum Product Subarray
*/
class Solution {
public:
int maxProduct(vector<int>& nums) {
const int N = nums.size();
if (N == 0) return 0;
int mi = nums[0], mx = nums[0], res = nums[0];
for (int i = 1; i < N; ++i) {
const int num = nums[i], mi_i = mi * num, mx_i = mx * num;
int f = max(num, max(mi_i, mx_i));
res = max(res, f);
mi = min(num, min(mi_i, mx_i));
mx = f;
}
return res;
}
};
Analysis
Last updated