解题思路:
(1)考虑到负数的情况,我们求出最大的三个数以及最小的三个数
(2)然后分析正负性,负负得正
class Solution {
public:
int maximumProduct(vector<int>& nums) {
int a=-1001,b=-1001,c=-1001;
int d=1001,e=1001,f=1001;
for(int i=0;i<nums.size();i++) {
if(nums[i]>a) c=b,b=a,a=nums[i];
else if(nums[i]>b) c=b,b=nums[i];
else if(nums[i]>c) c=nums[i];
if(nums[i]<d) f=e,e=d,d=nums[i];
else if(nums[i]<e) f=e,e=nums[i];
else if(nums[i]<f) f=nums[i];
}
if(nums.size()==3) return a*b*c;
if(nums.size()==4) {
if(c>=0) return a*b*c;
else if(b>=0 || a>=0) return d*c*a;
else return a*b*c;
}
if(nums.size()==5) {
if(e>=0) return a*b*c;
else if(c>=0) return a*max(b*c,d*e);
else if(b>=0 || a>=0) return d*e*a;
else return a*b*c;
}
if(nums.size()>=6) {
if(d>=0 || e>=0) return a*b*c;
else if(f>=0 || c>=0) return a*max(b*c,d*e);
else if(b>=0 || a>=0) return a*d*e;
else return a*b*c;
}
return 0;
}
};