題目:
題目鏈接:https://leetcode-cn.com/problems/maximum-product-subarray/
解題思路:
動態規劃,狀態轉移公式爲:
需要注意的一點是,因爲有負數的存在,所以在每一位需要保存最大和最小的兩個值,用於下一位的計算
代碼實現:
class Solution:
def maxProduct(self, nums: List[int]) -> int:
min_ans = max_ans = ans = nums[0]
for idx in range(1, len(nums)):
val_lst = [max_ans * nums[idx], nums[idx], min_ans * nums[idx]]
max_ans, min_ans = max(val_lst), min(val_lst)
ans = max(max_ans, ans)
return ans