代码随想录——一和零(Leetcode474)

题目链接

0-1背包

java 复制代码
class Solution {
    public int findMaxForm(String[] strs, int m, int n) {
        // 本题m,n为背包两个维度
        // dp[i][j]:最多右i个0和j个1的strs的最大子集大小
        int[][] dp = new int[m + 1][n + 1];
        // 遍历strs中字符串
        for(String str : strs){
            int num0 = 0;
            int num1 = 0;
            for(int i = 0; i < str.length(); i++){
                if(str.charAt(i) == '0'){
                    num0++;
                }
                if(str.charAt(i) == '1'){
                    num1++;
                }
            }
             for(int i = m; i >= num0; i--){
                for(int j = n; j >= num1; j--){
                    dp[i][j] = Math.max(dp[i][j], dp[i - num0][j - num1] + 1);
                }
             }
        }
        return dp[m][n];
    }
}

背包递推公式:dp[i][j] = max(dp[i][j], dp[i - num0][j - num1] + 1)

相关推荐
沙二原住民17 小时前
提升数据库性能的秘密武器:深入解析慢查询、连接池与Druid监控
java·数据库·oracle
中华小当家呐17 小时前
算法之常见八大排序
数据结构·算法·排序算法
Jerry&Grj18 小时前
SpringBoot埋点功能技术实现方案深度解析:架构设计、性能优化与扩展性实践
java·微服务·性能优化·springboot·架构设计·埋点技术
没有bug.的程序员18 小时前
Redis Stream:轻量级消息队列深度解析
java·数据库·chrome·redis·消息队列
沐怡旸18 小时前
【算法--链表】114.二叉树展开为链表--通俗讲解
算法·面试
用户81607918333318 小时前
告别“魔法”:包你解决 Gradle 的下载慢问题
java
tju新生代魔迷18 小时前
数据结构:双向链表
数据结构·链表
一只懒洋洋19 小时前
K-meas 聚类、KNN算法、决策树、随机森林
算法·决策树·聚类
当归102419 小时前
SQL Server死锁排查实战指南
java·服务器·网络
echoyu.19 小时前
消息队列-初识kafka
java·分布式·后端·spring cloud·中间件·架构·kafka