1 static int wing=[]() 2 { 3 std::ios::sync_with_stdio(false); 4 cin.tie(NULL); 5 return 0; 6 }(); 7 8 class Solution 9 { 10 public: 11 int maximumProduct(vector<int>& nums) 12 { 13 int max1=-1001,max2=-1001,max3=-1001,min1=1001,min2=1001; 14 for(int i:nums) 15 { 16 if(i>=max1) 17 { 18 max3=max2; 19 max2=max1; 20 max1=i; 21 } 22 else if(i>=max2) 23 { 24 max3=max2; 25 max2=i; 26 } 27 else if(i>=max3) 28 max3=i; 29 if(i<=min1) 30 { 31 min2=min1; 32 min1=i; 33 } 34 else if(i<=min2) 35 min2=i; 36 } 37 return max(max1*max2*max3,min1*min2*max1); 38 } 39 };
扫描一遍,找到三个最大,两个最小即可