給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。
示例 1:
輸入: [1,2,3]
輸出: 6
示例 2:
輸入: [1,2,3,4]
輸出: 24
注意:給定的整型陣列長度範圍是[3,104],陣列中所有的元素範圍是[-1000, 1000]。
輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。
解決方法:排序
將陣列進行公升序排序,如果陣列中所有的元素都是非負數,那麼答案即為最後三個元素的乘積。
如果陣列**現了負數,那麼我們還需要考慮乘積中包含負數的情況,顯然選擇最小的兩個負數和最大的乙個正數是最優的,即為前兩個元素與最後乙個元素的乘積。
上述兩個結果中的較大值就是答案。注意我們可以不用判斷陣列中到底有沒有正數,0 或者負數,因為上述兩個結果實際上已經包含了所有情況,最大值一定在其中。
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
])
class
solution
(object):
defmaximumproduct
(self, nums)
:"""
:type nums: list[int]
:rtype: int
"""nums.sort(
)return
max(nums[-1
]* nums[-2
]* nums[-3
], nums[0]
*nums[1]
*nums[-1
])
Leetcode 628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6 示例 2 輸入 1,2,3,4 輸出 24 注意 1.給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 2.輸入的陣列中任意三個數的乘積不會超出32位有符號整數...
Leetcode 628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,10 4 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。一...
LeetCode628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。解析...