天天看點

【LeetCode】Python實作-628. 三個數的最大乘積

給定一個整型數組,在數組中找出由三個數組成的最大乘積,并輸出這個乘積。

示例 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