题目
628. Maximum Product of Three Numbers
解题方法
遍历数组找到最大值max、次大值max2、第三大值max3、最小值min、次小值min2,然后返回maxmax2max3和minmin2max的最大值即可。
时间复杂度:O(n)
空间复杂度:O(1)
代码
class Solution:
def maximumProduct(self, nums: List[int]) -> int:
max1, max2, max3, min1, min2 = float('-Inf'), float('-Inf'), float('-Inf'), float('Inf'), float('Inf')
for num in nums:
if num > max1:
max3, max2, max1 = max2, max1, num
elif num > max2:
max3, max2 = max2, num
elif num > max3:
max3 = num
if num < min1:
min2, min1 = min1, num
elif num < min2:
min2 = num
return max(max1 * max2 * max3, min1 * min2 * max1)