当前位置:网站首页>Algorithms - ones and zeros (Kotlin)
Algorithms - ones and zeros (Kotlin)
2022-08-05 05:05:00 【Millet technology research and development of the Android Cao X】
题目
给你一个二进制字符串数组 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.思路要清晰
Let's break down the problem,Just thinking about whether to add the current to the collection
or don't join,Then it is equal to the previous largest value,要么加入,Then the maximum value will wait for the previous onea个0,b个1的最大值 + 1
七夕快乐
边栏推荐
- How does the Flutter TapGestureRecognizer work
- creo怎么测量点到面的距离
- Cryptography Series: PEM and PKCS7, PKCS8, PKCS12
- 判断语句_switch与case
- u-boot debugging and positioning means
- Flutter learning - the beginning
- 『递归』递归概念与典型实例
- mutillidae download and installation
- Error creating bean with name ‘configDataContextRefresher‘ defined in class path resource
- How can Flutter parent and child components receive click events
猜你喜欢

Use IDEA to connect to TDengine server

jvm 三 之堆与栈

Flutter学习5-集成-打包-发布

RL强化学习总结(一)

There are a lot of 4T hard drives remaining, prompting "No space left on device" insufficient disk space

【cesium】加载并定位 3D Tileset

小程序_动态设置tabBar主题皮肤

Using QR codes to solve fixed asset management challenges

动力小帆船制作方法简单,电动小帆船制作方法
![[Surveying] Quick Summary - Excerpt from Gaoshu Gang](/img/35/e5c5349b8d4ccf9203c432a9aaee7b.png)
[Surveying] Quick Summary - Excerpt from Gaoshu Gang
随机推荐
Flutter learning 2-dart learning
upload上传图片到腾讯云,如何上传图片
[cesium] element highlighting
算法---一和零(Kotlin)
大学物理---质点运动学
结构光三维重建(一)条纹结构光三维重建
【cesium】3D Tileset 模型加载并与模型树关联
Use IDEA to connect to TDengine server
二叉树基本性质+oj题解析
虚证、实证如何鉴别?
uva1325
Flutter Learning 4 - Basic UI Components
社区分享|腾讯海外游戏基于JumpServer构建游戏安全运营能力
Distributed systems revisited: there will never be a perfect consistency scheme...
Error creating bean with name ‘configDataContextRefresher‘ defined in class path resource
LAB Semaphore Implementation Details
AUTOCAD - dimension association
Flutter TapGestureRecognizer 如何工作
【cesium】元素高亮显示
number_gets the specified number of decimals