0
点赞
收藏
分享

微信扫一扫

leetcode152.乘积的最大子数组

时光已翩然轻擦 2022-01-23 阅读 52

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