力扣中國 · #628

三个数的最大乘积(Maximum Product of Three Numbers)

透過排序將問題簡化為比較兩種邊界情況,避免枚舉所有三元組。

開啟原題 ↗
時間複雜度O(n log n)
空間複雜度O(n)
解釋模型qwen/qwen3.8-27b

解題思路

作者很懶,所以我請 qwen/qwen3.8-27b 來幫他解釋。

將陣列排序後,最大乘積只可能來自「最大的三個數」或「最小的兩個負數與最大的正數」,取兩者較大值即可。

通過的程式碼

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