给定一个整数数组 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