LeetCode(628. 三个数的最大乘积)

LeetCode(628. 三个数的最大乘积)


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

示例 1:

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


示例 2:

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

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


链接:题目链接

题解:

class Solution:
    def maximumProduct(self, n: List[int]) -> int:
        ## 先倒序排序,对正数和负数分开判断
        n.sort(reverse=True)
        ## 找负数的个数,不可能取负数的三个值,所以只可能取负数的两个值
        count = 0
        ## 判断倒序后的n的前面三个和最后两个负数的大小
        for i in range(len(n)):
            if n[i]<0:
                count = len(n)-i
                if count>=2:a = n[-count:][-2:]
                break
        b = n[0]*n[1]*n[2]
        if count >=2:
            c = n[0]*a[-2]*a[-1]
            if c>=b:return c
        return b

猜你喜欢

转载自blog.csdn.net/adminkeys/article/details/112856824