[LeetCode]152. Maximum Product Subarray
152. Maximum Product Subarray
动态规划
class Solution(object):
def maxProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
min_dp = [0] * len(nums)
max_dp = [0] * len(nums)
min_dp[0] = max_dp[0] = nums[0]
res = nums[0]
for i in range(1, len(nums)):
ma = max_dp[i - 1]
max_dp[i] = max(nums[i], max(max_dp[i - 1] * nums[i], min_dp[i - 1] * nums[i]))
min_dp[i] = min(nums[i], min(ma * nums[i], min_dp[i - 1] * nums[i]))
res = max(res, max_dp[i])
return res
关注公众号:数据结构与算法那些事儿,每天一篇数据结构与算法