leetcode_628. 三个数的最大乘积

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

 

示例 1:

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

输入:nums = [1,2,3,4]
输出:24
示例 3:

输入:nums = [-1,-2,-3]
输出:-6
 

提示:

3 <= nums.length <= 104
-1000 <= nums[i] <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。****
class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        nums.sort()
        n=len(nums)
        t=-1
        #寻找大于等于0的位置
        for i in range(n):
            if nums[i]>=0:
                t=i
                break
        if n==3:#只有3个数
            return nums[0]*nums[1]*nums[2]
        if t==-1:
            #全是负数
            return nums[-1]*nums[-2]*nums[-3]
        elif t==n-1:
            #一个正数或0
            return nums[-1]*nums[0]*nums[1]
        #elif t==n-2:
            #两个正数或0
        #    return max(nums[-1]*nums[-2]*nums[-3],nums[-1]*nums[0]*nums[1])
        else:#两个正数或以上
             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()
        return max(nums[-1]*nums[-2]*nums[-3],nums[-1]*nums[0]*nums[1])
class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        big1=big2=big3=-1001
        small1=small2=1001
        for x in nums:#两个最小值
            if x<small1:
                small2=small1
                small1=x
            elif x<small2:
                small2=x

            if x>big1:
                big3=big2
                big2=big1
                big1=x
            elif x>big2:
                big3=big2
                big2=x
            elif x>big3:
                big3=x

        return max(big1*small1*small2,big1*big2*big3)
posted @ 2021-02-10 17:02  hqzxwm  阅读(42)  评论(0编辑  收藏  举报