力扣628. 三个数的最大乘积

原题

数组sort之后分类讨论

  • 元素全正或全负,则最后的三个元素之积最大
  • 部分为正部分为负,则要么最后三个元素之积最大,要么前两个元素与最后一个元素之积最大
  1. 如果nums[0]✖nums[1]>0,则不管nums[2]~nums[n-1]为正为负都是和最后一个元素之积最大
  2. 如果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])

 

posted @ 2021-01-24 20:37  凝视深空  阅读(56)  评论(0编辑  收藏  举报