当前位置:网站首页>算法---一和零(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
七夕快乐
边栏推荐
- Is the NPDP certificate high in gold content?Compared to PMP?
- Android interview question - how to write with his hands a non-blocking thread safe queue ConcurrentLinkedQueue?
- UE4 后期处理体积 (角色受到伤害场景颜色变淡案例)
- UE4 第一人称角色模板 添加冲刺(加速)功能
- 重载运算符
- [极客大挑战 2019]FinalSQL
- 数字孪生技术在电力系统中的应用现状
- [MRCTF2020] Ezpop (detailed)
- What is ASEMI photovoltaic diode, the role of photovoltaic diode
- iMedicalLIS listener (2)
猜你喜欢
[MRCTF2020] PYWebsite
雷克萨斯lm的安全性到底体现在哪里?一起来看看吧
How to solve the three major problems of bank data collection, data supplementary recording and index management?
bytebuffer internal structure
作业8.4 进程间的通信 管道与信号
University Physics---Particle Kinematics
What is ASEMI photovoltaic diode, the role of photovoltaic diode
[Geek Challenge 2019]FinalSQL
The log causes these pits in the thread block, you have to guard against
【8.1】代码源 - 【第二大数字和】【石子游戏 III】【平衡二叉树】
随机推荐
狗仔队:表面编辑多视点图像处理
Event parse tree Drain3 usage and explanation
第一次性能测试实践,有“亿”点点紧张
The production method of the powered small sailboat is simple, the production method of the electric small sailboat
AUTOCAD——标注关联
Is the NPDP certificate high in gold content?Compared to PMP?
[8.3] Code Source - [meow ~ meow ~ meow~] [tree] [and]
作业8.4 进程间的通信 管道与信号
How to wrap markdown - md file
Day14 jenkins deployment
日志导致线程Block的这些坑,你不得不防
大学物理---质点运动学
Homework 8.4 Interprocess Communication Pipes and Signals
如何解决复杂的分销分账问题?
JeeSite New Report
Feature preprocessing
flink读取mongodb数据源
Develop your own node package
dedecms织梦tag标签不支持大写字母修复
Detailed explanation of Mysql's undo log