- 描述:
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
- 分析:找出给定数组中三个数最大的乘积并输出。
- 思路一:分析出这三个乘积的所有可能情况。
1.数组中元素全正或全负,这是对数组排序后可以发现最大值为最后三个数的乘积。
2.数组元素有正有负:在这种情况下有两种子情况,一种是头部的两个负数大于尾部倒数第二个和第三个值的乘积。另一种情况是只有一个正数。
class Solution {
public:
int maximumProduct(vector<int>& nums) {
sort(nums.begin(), nums.end());
int rear = nums.size() - 1;
int head = 0;
int res = nums[rear];
if (nums[rear] * nums[rear - 1] < 0 || nums[rear - 1] * nums[rear - 2] < nums[head] * nums[head + 1]) res *= nums[head] * nums[head + 1];
else res *= nums[rear - 1] * nums[rear - 2];
return res;
}
};