题目:

思路:

一开始是使用的每次乘积的最大值. 遍历. 然后因为有负数所以还是差点.看了答案,发现还需要保存一个负数的值.当当前的值是负数的时候 互换位置.然后获得当前最大值.

代码是:
//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;
    }
};


















