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