LeetCode 628. 三个数的最大乘积(C、C++、python)

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 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& 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)

 

你可能感兴趣的:(LeetCode)