628. Maximum Product of Three Numbers
Given an integer array, find three numbers whose product is maximum and output the maximum product.
Example 1:
Input: [1,2,3] Output: 6
Example 2:
Input: [1,2,3,4] Output: 24
Note:
- The length of the given array will be in range [3,104] and all elements are in the range [-1000, 1000].
- Multiplication of any three numbers in the input won't exceed the range of 32-bit signed integer.
解题思路:先对数组从小到大排序,找出倒数第二大和倒数第三大的数字并求乘积ma1。找出最小的两个数字求乘积ma2(判断有两个数字是负数的情况),比较ma1和ma2,取最大乘积和最大数字求积。
代码如下:
class Solution {
public:
int maximumProduct(vector<int>& nums) {
sort(nums.begin(),nums.end());
int len = nums.size();
int ma1 = nums[len-3] * nums[len-2];
int ma2 = nums[0] * nums[1];
ma1 = ma1 > ma2 ? ma1 : ma2;
return ma1 * nums[len-1];
}
};