天天看點

3.23_628.數組_數組的周遊_三個數的最大乘積(easy)

給你一個整型數組 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

  • 思路

将nums排序 如果全為正數或全為負數,

最大三個數的乘積為a 如果存在兩個以上負數,

兩個最小負數與最大正數的乘積b

三數乘積的最大值肯定為:max(a,b)

  • 複雜度分析

sort底層為Timsort

時間複雜度:O(NlogN)

空間複雜度:O(N)

  • 代碼
class Solution:
    def maximumProduct1(self, nums: List[int]) -> int:
        nums.sort()
        a = nums[-1] * nums[-2] * nums[-3]
        b = nums[0] * nums[1] * nums[-1]
        return max(a, b)