題目來源於力扣
理論基礎
動態規劃
乘積最大子序列
題目描述
給定一個整數陣列 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