leetcode152.乘积的最大子数组

阅读 52

2022-01-23

题目:
给你一个整数数组 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

精彩评论(0)

0 0 举报