628. 三个数的最大乘积

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

示例 1:

输入: [1,2,3]
输出: 6
示例 2:

输入: [1,2,3,4]
输出: 24
注意:

给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers

class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        n=len(nums)
        if n==3:return nums[0]*nums[1]*nums[2]
        negative=0
        for i in nums:
            if i<0:
                negative+=1
        positive=n-negative
        nums.sort()
        if negative==0:return nums[-1]*nums[-2]*nums[-3]
        if negative==1:return nums[-1]*nums[-2]*nums[-3]
        if negative==2:return max(nums[-1]*nums[-2]*nums[-3],nums[0]*nums[1]*nums[-1])
        if negative>=3:return max(nums[-1]*nums[-2]*nums[-3],nums[-1]*nums[0]*nums[1])

class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        nums.sort()
        
        if nums[1]<0:
            return max(nums[0]*nums[1]*nums[-1],nums[-3]*nums[-2]*nums[-1])
        else:
            return nums[-3]*nums[-2]*nums[-1]
        

class Solution(object):
    def maximumProduct(self, nums):
        nums.sort()
        return max(nums[-1]*nums[-2]*nums[-3],nums[0]*nums[1]*nums[-1])

原文地址:https://www.cnblogs.com/xxxsans/p/13768104.html