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.
题目大意:
给定一个数组,找出三个数,使得这三个数的乘积最大。
需要注意题目给出的数组中包含负数。如果只有正数的话,直接找出三个最大的数相乘即可。有了负数需要多考虑一种情况,即:两个最小的负数相乘再乘一个最大的正数。
题目代码:
class Solution {
public:
int maximumProduct(vector<int>& nums) {
int n1,n2,n3,n4,n5,n6;
int max1,max2;
if(nums.size() == 3) return nums[0] * nums[1] * nums[2];
sort(nums.begin(), nums.end());
n1 = nums[0];
n2 = nums[1];
n3 = nums[2];
n6 = nums[nums.size()-1];
n5 = nums[nums.size()-2];
n4 = nums[nums.size()-3];
max1 = n1 * n2 * n6;
max2 = n6 * n5 * n4;
return max(max1,max2);
}
};