给定一个整数列表 nums ,且 nums 中至少含有3个整数,请在列表中找出由三个数组成的最大乘积,并输出这个乘积。
例如:
给定一个列表:[1, 2, 3],返回结果:6
给定一个列表:[1, 2, -3, -3, 0],返回结果:18
排序
的方式来实现,但时间复杂度为 O(nlog(n))def maximumProduct(nums): nums.sort() return max(nums[0] * nums[1] * nums[-1], nums[-3] * nums[-2] * nums[-1])
def maximumProduct(nums): min1, min2 = float("inf"), float("inf") # 定义一个无穷大的数,所有数都比 inf 小 max1, max2, max3 = float("-inf"), float("-inf"), float("-inf") # 定义一个无穷小的数,所有数都比 -inf 大 for num in nums: if num < min1: min1, min2 = num, min1 elif num < min2: min2 = num if num > max1: max1, max2, max3 = num, max1, max2 elif num > max2: max2, max3 = num, max2 elif num > max3: max3 = num num_product1 = max1 * max2 * max3 num_product2 = max1 * min1 * min2 return num_product1 if num_product1 > num_product2 else num_product2
更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)