一、问题描述
给定一个数组,找出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()从大到小排序。
该博客介绍了如何在给定数组中找到乘积最大的三个数。首先通过排序数组,然后比较前三个数和最后两个负数与最大正数的乘积,选择较大者作为最大乘积。代码中使用了C++的sort函数和三目运算符来实现这一逻辑。
201

被折叠的 条评论
为什么被折叠?



