[leetcode 10-07] 二、乘积的最大子数组

在这里插入图片描述

根据求解思路写出的code

		if len(nums)==1:return nums[0]
        # 因为2个负数相乘可能会变成正数
        dpmax = [0] * len(nums)
        dpmin = [0] * len(nums)
        dpmax[0] = max(nums[0],0)
        dpmin[0] = min(nums[0],0)
        for i in range(1,len(nums)):
            dpmax[i] = max(dpmax[i-1]*nums[i],dpmin[i-1]*nums[i],0,nums[i])
            dpmin[i] = min(dpmax[i-1]*nums[i],dpmin[i-1]*nums[i],0,nums[i])
        return max(dpmax)

在这里插入图片描述

解法2:类似于滑动窗口
可以用类似3个指针的方法
在这里插入图片描述

类似滑动窗口的方法

猜你喜欢

转载自blog.csdn.net/weixin_45492560/article/details/120638318
今日推荐