class Solution {
public:
    int maxProduct(vector<int>& nums) {
        int r=nums[0];//记录我们要找的最大的数
        int max_num=r;//记录以nums[i]结尾的最大乘积
        int min_num=r;//记录以nums[i]结尾的最小乘积
        for(int i=1;i<nums.size();++i){
            if(nums[i]<0)
                swap(max_num,min_num);//因为乘以一个负数会让大的变小,小的变大,所以要交换位置。
            max_num=max(nums[i],max_num*nums[i]);
            min_num=min(nums[i],min_num*nums[i]);
            r=max(max_num,r);
        }
        return r;
        
    }
};