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