原题链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers/
题目
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入:nums = [1,2,3]
输出:6
示例 2:
输入:nums = [-1,-2,-3]
输出:-6
思路
如果不存在负数的话就直接排序找最大的三个就行了。
存在负数的话可能俩负数一正数也是最大的,那么怎么搞嘞。
都算一遍的思路,排序后三个最大的相乘,俩最小和一最大的相乘,然后取较大值。
class Solution {
public:
int maximumProduct(vector<int>& nums) {
sort(nums.begin(), nums.end());
int length = nums.size() - 1;
int res = nums[0] * nums[1] *nums[length];
int res2 = nums[length] * nums[length - 1] * nums[length -2];
return max(res, res2);
}
};
题解中有个做法,和这个思路一样,反正最后计算的时候就俩最小和三最大的值,那就只找到这五个值就行了,一次遍历,不需要排序。