題目描述:
給定一個整型數組,在數組中找出由三個數組成的最大乘積,并輸出這個乘積。
示例 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()
if nums[-1]*nums[-2]*nums[-3] > nums[0]*nums[1]*nums[-1]:
return nums[-1]*nums[-2]*nums[-3]
else:
return nums[0]*nums[1]*nums[-1]