题目:
思路:
一开始是使用的每次乘积的最大值. 遍历. 然后因为有负数所以还是差点.看了答案,发现还需要保存一个负数的值.当当前的值是负数的时候 互换位置.然后获得当前最大值.
代码是:
//code
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n=nums.size();
int tmax=-10e7,maxres=1,minres = 1;
for(int i=0;i<n;i++){
if(nums[i]<0){
int temp = maxres;
maxres=minres;
minres=temp;
}
maxres=max(nums[i],maxres*nums[i]);
minres=min(nums[i],minres*nums[i]);
tmax=max(maxres,tmax);
}
return tmax;
}
};