给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
示例 1:
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
令imax,imin为当前索引的最大最小值
当遇到负数的时候,负数乘最大值就变成了最小值,所以应该在比较之前把imax和imin调换
1 class Solution: 2 def maxProduct(self, nums: List[int]) -> int: 3 Max = nums[0] 4 imax,imin=1,1 5 for i in nums: 6 if i < 0: 7 imax,imin=imin,imax 8 imax= max(imax*i,i) 9 imin=min(imin*i,i) 10 Max = max(imax,Max) 11 return Max