474. 一和零

作者: cptn3m0 | 来源:发表于2019-03-20 00:29 被阅读0次

使用滚动数组法来优化空间复杂度

class Solution(object):
    def findMaxForm(self, strs, m, n):
        """
        :type strs: List[str]
        :type m: int
        :type n: int
        :rtype: int
        """
        
        if not strs:
            return 0
        nums = len(strs)
        dp = [[[0] * (n + 1) for _ in range(m + 1)] for _ in range(2)]

        for i in range(1, nums + 1):
            n0 = strs[i-1].count("0")
            n1 = strs[i-1].count("1")

            for j in range(m+1):
                for k in range(n+1):
                    if j >= n0  and k >= n1:
                        # use_i = dp[(i-1)%2][j][k]
                        # non_i = dp[(i-1)%2][j-n0][k-n1]+ 1
                        dp[i%2][j][k] = max(dp[(i-1)%2][j][k], dp[(i-1)%2][j-n0][k-n1]+ 1)
                    else:
                        dp[i%2][j][k] = dp[(i-1)%2][j][k]
        return dp[nums%2][-1][-1]

相关文章

  • 474. 一和零

    【Description】在计算机界中,我们总是追求用有限的资源获取最大的收益。 现在,假设你分别支配着 m 个 ...

  • 474. 一和零

    使用滚动数组法来优化空间复杂度

  • LeetCode 474. 一和零

    1、题目 一和零 - 力扣(LeetCode) https://leetcode-cn.com/problems/...

  • 474. 一和零[Python]

    题目 难度:★★★☆☆类型:数组方法:动态规划 力扣链接请移步本题传送门[https://leetcode-cn....

  • LeetCode 474. 一和零

    题目 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。请你找出并返回 strs 的最大子集的长度,该...

  • 0-1背包:474. 一和零(中等)

    给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的大小,该子集...

  • LeetCode 474 一和零

    题目 一和零 题目内容 在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着 m 个 0 ...

  • 动态十:一和零

    题目地址: https://leetcode-cn.com/problems/ones-and-zeroes/[...

  • 背包系列问题4——二维背包

    参考资料:1. 动态规划之背包问题系列2. #### 一和零

  • T474、一和零

    在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着 m 个 0 和 n 个 1。另外,还...

网友评论

    本文标题:474. 一和零

    本文链接:https://www.haomeiwen.com/subject/iwqamqtx.html