1 題目描述
給定一個整型數組,在數組中找出由三個數組成的最大乘積,並輸出這個乘積。
示例 1:
輸入: [1,2,3]
輸出: 6
示例 2:
輸入: [1,2,3,4]
輸出: 24
注意:
給定的整型數組長度範圍是[3,104],數組中所有的元素範圍是[-1000, 1000]。
輸入的數組中任意三個數的乘積不會超出32位有符號整數的範圍。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
2 解題思路
解決方法:排序
將數組進行升序排序,如果數組中所有的元素都是非負數,那麼答案即爲最後三個元素的乘積。
如果數組中出現了負數,那麼我們還需要考慮乘積中包含負數的情況,顯然選擇最小的兩個負數和最大的一個正數是最優的,即爲前兩個元素與最後一個元素的乘積。
上述兩個結果中的較大值就是答案。注意我們可以不用判斷數組中到底有沒有正數,0 或者負數,因爲上述兩個結果實際上已經包含了所有情況,最大值一定在其中。
作者:LeetCode
鏈接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers/solution/san-ge-shu-de-zui-da-cheng-ji-by-leetcode/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
3 解決代碼
- Java 代碼
class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
return max(nums[-1] * nums[-2] * nums[-3], nums[0]*nums[1]*nums[-1])
- python 代碼
class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
return max(nums[-1] * nums[-2] * nums[-3], nums[0]*nums[1]*nums[-1])