一、问题描述
给定一个数组,找出3个数,使它们的乘积最大
二、问题解析
首先想到,给数组排序,输出前三个数的乘积;但还有一种可能,两个最小的负数乘以最大的正数,我们可以将两者作比较,输出最大的
三、代码
class Solution
{
public:
int maximumProduct(vector<int>& nums)
{
sort(nums.begin(), nums.end(), greater<int>());
int len = (signed)nums.size();
return nums[0]*nums[1]*nums[2] < nums[len-1]*nums[len-2]*nums[0] ? nums[len-1]*nums[len-2]*nums[0] : nums[0]*nums[1]*nums[2];
}
};
四、总结
三目运算,表达式1 ? 表达式2 :表达式3,意思为如果表达式1成立,则整个表达式为表达式2的值,否则为表达式3 的值。
sort()默认为从小到大排序,greater()从大到小排序。