演算法題:乘積最大子序列

GetaChan發表於2019-12-02

題目來源於力扣

理論基礎

動態規劃

乘積最大子序列

題目描述

給定一個整數陣列 nums ,找出一個序列中乘積最大的連續子序列(該序列至少包含一個數)。

示例

示例 1:

輸入: [2,3,-2,4]
輸出: 6
解釋: 子陣列 [2,3] 有最大乘積 6。
示例 2:

輸入: [-2,0,-1]
輸出: 0
解釋: 結果不能為 2, 因為 [-2,-1] 不是子陣列。

解題思路

提前儲存最小值,當出現負數,最小值會轉化為最大值

Python 解法

def maxProduct(self, nums):

    if nums is None: return 0

    res, curMax, curMin = nums[0], nums[0], nums[0]

    for i in range(1, len(nums)):
        num = nums[i]
        curMax, curMin = curMax * num, curMin * num
        curMin, curMax = min(curMax, curMin, num), max(curMax, curMin, num)

        res = curMax if curMax > res else res
    return res

相關文章