分析
原数组排序后共有两种情况:
-
最小的两个数<0,乘上最大的数是最大值
-
最大的三个数乘积是最大值
所以两者取max即可。
C++ 代码
class Solution {
public:
int maximumProduct(vector<int>& nums) {
int n=nums.size();
sort(nums.begin(),nums.end());
return max(nums[n-1]*nums[0]*nums[1],nums[n-1]*nums[n-2]*nums[n-3]); //取max
}
};