分析法案:点击打开链接
最小的负数乘以负数是可以变成最大的乘积,因为是可以当个值成为一个字串的所以有和单个值的比较。有两个乘积记录子序列的乘积,从最大的正值和最小的负值去记录更新。
class Solution {
public:
int maxProduct(vector<int>& nums) {
int re;
if(nums.empty()){
return 0;
}
int len = nums.size();
int remax = nums[0];
if(len == 1){
return nums[0];
}
int maxlast = nums[0];
int minlast= nums[0];
int maxCur = nums[0];
int minCur = nums[0];
for(int pre = 1 ; pre < len ; pre++){
maxCur = max(max(maxlast*nums[pre],minlast*nums[pre]),nums[pre]);
minCur = min(min(minlast*nums[pre],maxlast*nums[pre]),nums[pre]);
minlast = minCur;
maxlast = maxCur;
remax = max(maxCur , remax);
}
return remax;
}
};