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