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; } };