給定一個整型數組,在數組中找出由三個數組成的最大乘積,并輸出這個乘積。
示例 1:
輸入: [1,2,3]
輸出: 6
示例 2:
輸入: [1,2,3,4]
輸出: 24
注意:
給定的整型數組長度範圍是[3,104],數組中所有的元素範圍是[-1000, 1000]。
輸入的數組中任意三個數的乘積不會超出32位有符号整數的範圍。
解答:
最大乘積有三種情況:
(1)當數組中全是正數時,最大乘積為第一大數X第二大數X第三大數
(2)當數組中全是負數時,最大乘積為第一大數X第一小數X第二小數
(3)當數組中正負數都有時,最大乘積為第一大數X第二大數X第三大數,
或者第一大數X第一小數X第二小數,取兩者之中的最大值。
class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums)==3:
return nums[0]*nums[1]*nums[2]
l = max(nums)
nums.remove(l)
m = max(nums)
j = min(nums)
nums.remove(m)
nums.remove(j)
n = max(nums)
k = min(nums)
sum = max(l*m*n, l*j*k)
return sum