题意:给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
思路:维护最大值和最小值
因为存在复数所以,正数最大值可能乘以当前值会变成当前最小值
同理负数的最小值可能乘以当前值会变成当前正最大值
code:
class Solution:
def maxProduct(self, nums: List[int]) -> int:
dp1 = nums[0]
dp2 = nums[0]
ans = nums[0]
for i in nums[1:]:
tep1 = max(dp1 * i, i, dp2 * i)
tep2 = min(dp1 * i, i, dp2 * i)
dp1 = tep1
dp2 = tep2
ans = max(ans, dp1)
return ans