leetcode_628 三个数的最大乘积

134 阅读1分钟

要求

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入:nums = [1,2,3]
输出:6

示例 2:

输入:nums = [1,2,3,4]
输出:24

示例 3:

输入:nums = [-1,-2,-3]
输出:-6

提示:

  • 3 <= nums.length <= 104
  • -1000 <= nums[i] <= 1000

核心代码

class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        nums.sort()
        return max(nums[-1] * nums[-2] * nums[-3],nums[0] * nums[1] * nums[-1])

image.png

解题思路:由于数组中可能存在负数,所以首先对数组进行排序,乘积的最大值可能是最大的三个数的乘积或者最小的两个数与最大数的乘积中较大的一个

自己的理解:当我们进行了排序之后,当全是负数的时候[-4,-3,-2,-1],我们的nums[-1] * nums[-2] * nums[-3]取得最大值-6,当全是负数的时候[1,2,3,4],我们的nums[-1] * nums[-2] * nums[-3]取得最大值24,当我们的数据中存在整数和负数的时候[-4,-3,-2,1],我们在前面可以负负得正,通过nums[0] * nums[1] * nums[-1]可以取得最大值,所以我们返回的是其中较大的值。