[leetcode 10-07] 三、乘积为正数的最长子数组长度(动态规划)

在这里插入图片描述

		n = len(nums)
        pos, neg = [0] * n, [0] * n  #有一个专门存储位置
        if nums[0] > 0: pos[0] = 1
        elif nums[0] < 0: neg[0] = 1
        ans = pos[0]
        for i in range(1, n):
            if nums[i] > 0:
                pos[i] = 1 + pos[i-1]
                neg[i] = 1 + neg[i-1] if neg[i-1] > 0 else 0
            elif nums[i] < 0:
                pos[i] = 1 + neg[i-1] if neg[i-1] > 0 else 0
                neg[i] = 1 + pos[i-1]
            ans = max(ans, pos[i])
        return ans

参考大佬的解法
存储正数;负数的长度dp
遇见不一样的长度更新为0
在这里插入图片描述

参考链接

猜你喜欢

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