天天看點

leetcode每日一題:628. 三個數的最大乘積

目錄

    • 問題描述
    • 思路分析及代碼

問題描述

給定一個整型數組,在數組中找出由三個數組成的最大乘積,并輸出這個乘積。

示例 1:

輸入: [1,2,3] 輸出: 6 示例 2:

輸入: [1,2,3,4] 輸出: 24

注意:

給定的整型數組長度範圍是[3,104],數組中所有的元素範圍是[-1000, 1000]。

輸入的數組中任意三個數的乘積不會超出32位有符号整數的範圍。

思路分析及代碼

這道題可以先進行排序

然後最大值有兩種情況:

一種是最多含有一個負數或者都是負數,此時最大值為最後三個數之積

一種是至少含兩個負數但不全含,此時最大值為前兩個數和最後一個數之積

是以直接把這兩個最大積都算出來比較哪個大就可以了

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