题目:
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
解答:
class Solution:
def maxProduct(self, nums: List[int]) -> int:
res=-float('inf')
#imin,imax分别表示:以当前数为结尾的连续子数组的最小乘积和最大乘积
imin,imax=1,1
for i,num in enumerate(nums):
#负数会使最大的变成最小的,最小的变成最大的
if num<0:
imin,imax=imax,imin
imin=min(imin*num,num)
imax=max(imax*num,num)
res=max(res,imax)
return res