class Solution {
public:
int maxProduct(vector<int>& nums) {
int res = INT_MIN, minP = 1, maxP = 1;
for(int a:nums){
int mx = maxP*a, mn = minP*a;
maxP = max(max(mx, a), mn);
minP = min(min(mx, a), mn);
res = max(maxP, res);
}
return res;
}
};
相比Maximum Subarray, 0 和 负数会加大难度。因为最小的一个数可能因为乘上一个负数而成为最大的一个数,所以多记录一个最小数就行了(这里的minP)