给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入: [1,2,3] 输出: 6
示例 2:
输入: [1,2,3,4] 输出: 24
注意:
给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
C
int maximumProduct(int* nums, int numsSize)
{
if(numsSize<3)
{
return 0;
}
sort(nums,0,numsSize-1);
int res1=nums[numsSize-1]*nums[numsSize-2]*nums[numsSize-3];
int res2=nums[0]*nums[1]*nums[numsSize-1];
return res1>res2?res1:res2;
}
void sort(int *a, int left, int right)
{
if(left >= right)
{
return ;
}
int i = left;
int j = right;
int key = a[i];
while(i < j)
{
while(i < j && key <= a[j])
{
j--;
}
a[i] = a[j];
while(i < j && key >= a[i])
{
i++;
}
a[j] = a[i];
}
a[i] = key;
sort(a, left, i - 1);
sort(a, i + 1, right);
}
C++
class Solution {
public:
int maximumProduct(vector<int>& nums)
{
int n=nums.size();
if(n<3)
{
return 0;
}
sort(nums.begin(),nums.end());
int res1=nums[n-1]*nums[n-2]*nums[n-3];
int res2=nums[0]*nums[1]*nums[n-1];
return max(res1,res2);
}
};
python
class Solution:
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n=len(nums)
if n<3:
return 0;
nums=sorted(nums)
res1=nums[n-1]*nums[n-2]*nums[n-3]
res2=nums[0]*nums[1]*nums[n-1]
return max(res1,res2)