LeetCode:474.一和零

news/2025/2/3 11:30:14/

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode:474.一和零
给你一个二进制字符串数组 strs 和两个整数 m 和 n 。
请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。
如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。
示例 1:
输入:strs = [“10”, “0001”, “111001”, “1”, “0”], m = 5, n = 3
输出:4
解释:最多有 5 个 0 和 3 个 1 的最大子集是 {“10”,“0001”,“1”,“0”} ,因此答案是 4 。
其他满足题意但较小的子集包括 {“0001”,“1”} 和 {“10”,“1”,“0”} 。{“111001”} 不满足题意,因为它含 4 个 1 ,大于 n 的值 3 。
示例 2:
输入:strs = [“10”, “0”, “1”], m = 1, n = 1
输出:2
解释:最大的子集是 {“0”, “1”} ,所以答案是 2 。

  • 0-1背包求的是背包容量为j能装的最大价值
  • 分割等和子集求的是能否装满容量为target的背包
  • 最后一块石头的重量求的是容量为target的背包能装的最大重量是多少
  • 目标和求的是容量为target的背包装满有多少种方式,递推公式:dp[j] += dp[j - nums[i]]
  • 一和零求的是当背包容量是二维的时候能最多装多少个元素
  • 本题可以将m个0,n个1看成一种特殊的容器,可以直接转化为求这种特殊的容器最多能装满多少个元素
  • dp[i][j]i个0,j个1时最多能装dp[i][j]个元素
  • 递推公式:dp[i][j] = Math.max(dp[i][j], dp[i - zeroNum] + dp[j - oneNum] + 1,即不选当前元素时的值 和 选当前元素的值两种情况下取最大值,dp[i - zeroNum][j - oneNum] + 1意思是:先预留足够的空间,然后在加上当前的元素的个数1
  • 这里面背包的容量是二维的,需要同时考虑01的个数,而之前的0-1背包问题都是一维的
java">	public int findMaxForm(String[] strs, int m, int n) {int[][] dp = new int[m + 1][n + 1];int oneNum, zeroNum;for (String str : strs) {oneNum = 0;zeroNum = 0;for (char ch : str.toCharArray()) {if (ch == '0') {zeroNum++;} else {oneNum++;}}for (int i = m; i >= zeroNum; i--) {for (int j = n; j >= oneNum; j--) {dp[i][j] = Math.max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1);}}}return dp[m][n];}

http://www.ppmy.cn/news/1568938.html

相关文章

【赵渝强老师】K8s中Pod探针的TCPSocketAction

在K8s集群中,当Pod处于运行状态时,kubelet通过使用探针(Probe)对容器的健康状态执行检查和诊断。K8s支持三种不同类型的探针,分别是:livenessProbe(存活探针)、readinessProbe&#…

《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》

文章目录 Langchain的定义Langchain的组成三个核心组件实现整个核心组成部分 为什么要使用LangchainLangchain的底层原理Langchain实战操作LangSmithLangChain调用LLM安装openAI库-国内镜像源代码运行结果小结 使用Langchain的提示模板部署Langchain程序安装langserve代码请求格…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.4 索引优化:避免意外复制的高效技巧

2.4 索引优化:避免意外复制的高效技巧 目录/提纲 #mermaid-svg-hmMAIqF8kFh46fbH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hmMAIqF8kFh46fbH .error-icon{fill:#552222;}#mermaid-svg-hmMAIqF8kF…

深度学习查漏补缺:2. 三个指标和注意力机制

一、bachsize, num_epochs, dataset 在训练卷积神经网络(CNN)或任何其他深度学习模型时,有几个关键参数和概念需要了解:batch size、num epochs 和 dataset。下面是对它们的详细解释: Batch Size(批量大小&…

设计模式Python版 抽象工厂模式

文章目录 前言一、抽象工厂模式二、抽象工厂模式示例三、抽象工厂模式在Django框架中的应用 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结…

NLP自然语言处理通识

目录 ELMO 一、ELMo的核心设计理念 1. 静态词向量的局限性 2. 动态上下文嵌入的核心思想 3. 层次化特征提取 二、ELMo的模型结构与技术逻辑 1. 双向语言模型(BiLM) 2. 多层LSTM的层次化表示 三、ELMo的运行过程 1. 预训练阶段 2. 下游任务微调 四、ELMo的…

Microsoft Power BI:融合 AI 的文本分析

Microsoft Power BI 是微软推出的一款功能强大的商业智能工具,旨在帮助用户从各种数据源中提取、分析和可视化数据,以支持业务决策和洞察。以下是关于 Power BI 的深度介绍: 1. 核心功能与特点 Power BI 提供了全面的数据分析和可视化功能&…

使用 Docker(Podman) 部署 MongoDB 数据库及使用详解

在现代开发环境中,容器化技术(如 Docker 和 Podman)已成为部署和管理应用程序的标准方式。本文将详细介绍如何使用 Podman/Docker 部署 MongoDB 数据库,并确保其他应用程序容器能够通过 Docker 网络成功连接到 MongoDB。我们将逐步…