628. 三个数的最大乘积
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
class Solution:
def maximumProduct(self, nums: List[int]) -> int:
n=len(nums)
nums.sort()
return max(nums[0]*nums[1]*nums[n-1],nums[n-1]*nums[n-2]*nums[n-3])
此题中,求数组中的最大三个数的乘积可以有下面三种情况:
1.如果数组中的数全部为正,则选取最大的三个数相乘即可。
2.如果数组中的数全部为负,则依旧选取最大的三个数相乘即可。
3.如果数组中的数有正,有负,则最大乘积可能是最大的三个正数的乘积,也可能是选取最小的两个负数,再选取一个最大的正数相乘的结果。
因此在找寻最大乘积之前需先对数据进行排序,按照默认的升序排序即可。