当前位置:网站首页>算法---一和零(Kotlin)
算法---一和零(Kotlin)
2022-08-05 04:38:00 【小米科技Android 研发曹新雨】
题目
给你一个二进制字符串数组 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 。
提示:
1 <= strs.length <= 600
1 <= strs[i].length <= 100
strs[i] 仅由 ‘0’ 和 ‘1’ 组成
1 <= m, n <= 100
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/ones-and-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解决思路

解决方法
fun findMaxForm(strs: Array<String>, m: Int, n: Int): Int {
val size = strs.size
val dp = Array(size + 1) {
Array(m + 1) {
Array(n + 1) {
0 } } }
//统计0 和 1 的个数
val array = Array(size) {
Array(2) {
0 } }
strs.forEachIndexed {
index, s ->
val toCharArray = s.toCharArray()
toCharArray.forEach {
if (it == '0') {
array[index][0]++
} else {
array[index][1]++
}
}
}
//填充dp数组
for (i in 0..size) {
for (j in 0..m) {
for (k in 0..n) {
if (i > 0) {
dp[i][j][k] = dp[i - 1][j][k]
if (j - array[i - 1][0] >= 0 && k - array[i - 1][1] >= 0) {
dp[i][j][k] = dp[i][j][k].coerceAtLeast(dp[i - 1][j - array[i - 1][0]][k - array[i - 1][1]] + 1)
}
}
}
}
}
return dp[size][m][n]
}
总结
1.思路要清晰
我们要把问题分解开来,只思考要不要把当前加到集合里面
要么不加入,那么就等于前一个最大的值,要么加入,则最大值就等前面的a个0,b个1的最大值 + 1
七夕快乐
边栏推荐
- Bosses, I noticed that a mysql CDC connector parameters scan. The incremental. Sna
- mysql数据库表什么字段类型的存储长度最大?
- Develop your own node package
- dedecms error The each() function is deprecated
- JeeSite新建报表
- What is ASEMI photovoltaic diode, the role of photovoltaic diode
- 炎炎夏日教你利用小米智能家居配件+树莓派4接入Apple HomeKit
- Some conventional routines of program development (1)
- 【8.2】代码源 - 【货币系统】【硬币】【新年的问题(数据加强版)】【三段式】
- Feature preprocessing
猜你喜欢

mutillidae download and installation

The log causes these pits in the thread block, you have to guard against

There are several common event handling methods in Swing?How to listen for events?

Please write the SparkSQL statement

狗仔队:表面编辑多视点图像处理

bytebuffer internal structure

小程序_动态设置tabBar主题皮肤
![[MRCTF2020] PYWebsite](/img/d4/57e8e5ee45b742894679f3f5671516.png)
[MRCTF2020] PYWebsite
![[Geek Challenge 2019]FinalSQL](/img/e4/0c8225ef7c5e7e5bdbaac2ef6fc867.png)
[Geek Challenge 2019]FinalSQL

AUTOCAD - dimension association
随机推荐
software management rpm
How to identify false evidence and evidence?
upload upload pictures to Tencent cloud, how to upload pictures
【8.2】代码源 - 【货币系统】【硬币】【新年的问题(数据加强版)】【三段式】
AUTOCAD——标注关联
BI业务分析思维:现金流量风控分析(二)信用、流动和投资风险
[BSidesCF 2019]Kookie
upload上传图片到腾讯云,如何上传图片
七夕节赚徽章拉
说说数据治理中常见的20个问题
[SWPU2019]Web1
[CISCN2019 华东南赛区]Web11
Mini Program_Dynamic setting of tabBar theme skin
四位数显表头设计
35岁的软件测试工程师,月薪不足2W,辞职又怕找不到工作,该何去何从?
机器学习概述
从企业的视角来看,数据中台到底意味着什么?
【树莓派】树莓派调光
dedecms error The each() function is deprecated
【8.3】代码源 - 【喵 ~ 喵 ~ 喵~】【树】【与】