力扣中國 · #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])