1. 程式人生 > 其它 >628. 三個數的最大乘積(傻瓜教程)(python)(LC)

628. 三個數的最大乘積(傻瓜教程)(python)(LC)

技術標籤:傻瓜教程(LC)leetcodepython

628. 三個數的最大乘積

給定一個整型陣列,在陣列中找出由三個陣列成的最大乘積,並輸出這個乘積。


示例 1:

輸入: [1,2,3]
輸出: 6

示例 2:

輸入: [1,2,3,4]
輸出: 24

注意: 給定的整型陣列長度範圍是[3,104],陣列中所有的元素範圍是[-1000, 1000]。 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。

解題

基本思路:最大乘積的組合可能為(+,+,+)或(+,-,-)

一、排序(呼叫函式)

class Solution:
    def maximumProduct1(self,
nums: List[int]) -> int: nums.sort() a = nums[-1] * nums[-2] * nums[-3] b = nums[0] * nums[1] * nums[-1] return max(a, b)

二、排序(排序的具體展開)(陣列的動態維護)

class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        a = b = c = float('-inf')
        d = e =
float('inf') for i, num in enumerate(nums): # 更新最大三個數 if num > a: a, b, c = num, a, b elif num > b: b, c = num, b elif num > c: c = num # 更新最小兩個數 if num < d: d,
e = num, d elif num < e: e = num return max(d * e * a, a * b * c)