152.乘积最大子序列

lc152 乘积最大子序列

思路:同时记录最大值和最小值,遍历一遍,当遍历到负数时,交换最大值和最小值

class Solution(object):
    def maxProduct(self, nums):
        imax,imin,res = 1,1,nums[0]
        for i in range(len(nums)):
            if nums[i] < 0:
                imax,imin = imin,imax
            imax = max(imax*nums[i],nums[i])
            imin = min(imin*nums[i],nums[i])
            res = max(res, imax)
        return res

你可能感兴趣的:(152.乘积最大子序列)