数组sort之后分类讨论
- 元素全正或全负,则最后的三个元素之积最大
- 部分为正部分为负,则要么最后三个元素之积最大,要么前两个元素与最后一个元素之积最大
- 如果nums[0]✖nums[1]>0,则不管nums[2]~nums[n-1]为正为负都是和最后一个元素之积最大
- 如果nums[0]✖nums[1]<0,则必有nums[0]<0,nums[1]>0,此时不管元素个数>3还是<=3,都取最后三个数之积为最大
1 class Solution: 2 def maximumProduct(self, nums: List[int]) -> int: 3 nums.sort() 4 return max(nums[-1] * nums[-2] * nums[-3],nums[-1] * nums[0] * nums[1])