https://blog.youkuaiyun.com/whuwangyi/article/details/39577455解法3
class Solution { public: int maxProduct(vector<int>& nums) { int max = nums[0]; int pre_max = nums[0],pre_min = nums[0]; int cur_max,cur_min; for(int i = 1;i < nums.size();i++){ cur_max = compare_max(pre_max*nums[i],pre_min*nums[i],nums[i]); cur_min = compare_min(pre_max*nums[i],pre_min*nums[i],nums[i]); pre_max = cur_max; pre_min = cur_min; max = cur_max > max ? cur_max : max; } return max; } int compare_max(int a,int b,int c){ int max = a; if(b > max) max = b; if(c > max) max = c; return max; } int compare_min(int a,int b,int c){ int min = a; if(b < min) min = b; if(c < min) min = c; return min; } };