474. 一和零 golang动态规划

474. 一和零

在计算机界中,我们总是追求用有限的资源获取最大的收益。

现在,假设你分别支配着 m 个 0 和 n 个 1。另外,还有一个仅包含 0 和 1 字符串的数组。

你的任务是使用给定的 m 个 0 和 n 个 1 ,找到能拼出存在于数组中的字符串的最大数量。每个 0 和 1 至多被使用一次。

注意:

给定 0 和 1 的数量都不会超过 100。
给定字符串数组的长度不会超过 600。
示例 1:

输入: Array = {“10”, “0001”, “111001”, “1”, “0”}, m = 5, n = 3
输出: 4

解释: 总共 4 个字符串可以通过 5 个 0 和 3 个 1 拼出,即 “10”,“0001”,“1”,“0” 。
示例 2:

输入: Array = {“10”, “0”, “1”}, m = 1, n = 1
输出: 2

解释: 你可以拼出 “10”,但之后就没有剩余数字了。更好的选择是拼出 “0” 和 “1” 。

代码

func findMaxForm(strs []string, m int, n int) int {// golang 二维数组的初始化dp := make([][]int, m + 1)for i := 0; i <= m; i++ {dp[i] = make([]int, n + 1)}// 这个题我们不能从0,0开始判断,外循环条件是strfor _, str := range strs {// 查询当前字符串中0和1的个数number0, number1 := getLen(str)for i := m; i >= number0; i-- {for j := n; j >= number1; j-- {dp[i][j] = max(dp[i][j], dp[i-number0][j-number1] + 1)}}}return dp[m][n]
}func max(a, b int) int {if a > b {return a}return b
}func getLen(str string) (number0, number1 int) {for _, n := range str {if n == '0' {number0++} else {number1++}}return number0, number1
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

518. 零钱兑换 II golang动态规划

518. 零钱兑换 II 给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1: 输入: amount 5, coins [1, 2, 5] 输出: 4 解释: 有四种方式可以凑成总金额: 55 5221 52111 511111 示例 2: 输入: amount 3, co…

494. 目标和 golang 动态规划

题目 494. 目标和 给定一个非负整数数组&#xff0c;a1, a2, …, an, 和一个目标数&#xff0c;S。现在你有两个符号 和 -。对于数组中的任意一个整数&#xff0c;你都可以从 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示…

1360. 日期之间隔几天 golang

1360. 日期之间隔几天 请你编写一个程序来计算两个日期之间隔了多少天。 日期以字符串形式给出&#xff0c;格式为 YYYY-MM-DD&#xff0c;如示例所示。 示例 1&#xff1a; 输入&#xff1a;date1 “2019-06-29”, date2 “2019-06-30” 输出&#xff1a;1 示例 2&#…

1154. 一年中的第几天 golang

1154. 一年中的第几天 给你一个按 YYYY-MM-DD 格式表示日期的字符串 date&#xff0c;请你计算并返回该日期是当年的第几天。 通常情况下&#xff0c;我们认为 1 月 1 日是每年的第 1 天&#xff0c;1 月 2 日是每年的第 2 天&#xff0c;依此类推。每个月的天数与现行公元纪…

1185. 一周中的第几天 golang

1185. 一周中的第几天 给你一个日期&#xff0c;请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数&#xff1a;day、month 和 year&#xff0c;分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday…

golang time包梳理

import “time” 官方文档 func main() {fmt.Println(time.Now())// Parse解析一个格式化的时间字符串并返回它代表的时间fmt.Println(time.Parse("2006.01.02", "2012.02.11"))date : time.Now()// 判断两个时间是否相同&#xff0c;会考虑时区的影响&a…

179. 最大数 golang (自定义sort)

179. 最大数 给定一组非负整数&#xff0c;重新排列它们的顺序使之组成一个最大的整数。 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 Code import ("so…

1356. 根据数字二进制下 1 的数目排序 golang

golang的自定义排序 根据数字二进制下 1 的数目排序 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同&#xff0c;则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1&#x…

LeetCode单链表题目测试代码(只需添加对应题目,本地即可debug)

本地模拟单链表 package single_listimport ("strconv" )/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/type ListNode struct {Val intNext * ListNode } // Add String method to use print func (l *L…

138. 复制带随机指针的链表 golang

138. 复制带随机指针的链表 这个题结构体特殊&#xff0c;需要更改上一篇博客的node结构体 给定一个链表&#xff0c;每个节点包含一个额外增加的随机指针&#xff0c;该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的 深拷贝。 我们用一个由 n 个节点组成的链表…

160. 相交链表 golang

160. 相交链表 计算两个链表长度&#xff0c;让长的先走到两个链表一样长&#xff0c;然后找交点 编写一个程序&#xff0c;找到两个单链表相交的起始节点。 如下面的两个链表&#xff1a; 在节点 c1 开始相交。 示例 1&#xff1a; 输入&#xff1a;intersectVal 8, li…

86. 分隔链表 golang

86. 分隔链表 只把小的放在一边&#xff0c;大于的不用放到右边&#xff08;这个题的题目比较晦涩&#xff0c;很多人说看不懂题&#xff0c;我也没看懂&#xff0c;解法也没什么特殊&#xff0c;半天没读懂题&#xff0c;看了别人的解法&#xff09; 给定一个链表和一个特定值…

141. 环形链表 golang

141. 环形链表 给定一个链表&#xff0c;判断链表中是否有环。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则在该链表中没有环。 示例 1&#xff1a; 输入&a…

142. 环形链表 II golang

142. 环形链表 II 给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff…

206. 反转链表 golang

206. 反转链表 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL Code /*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/ func reverseList(head *Li…

钗头凤&烦

冰日睡&#xff0c;寒风随&#xff0c;心凄意伤镜花碎。断世伪&#xff0c;奈何为&#xff1f;一尊孤剑&#xff0c;几分凄碎。泪&#xff01;泪&#xff01;泪&#xff01;应天怨&#xff0c;残心毁&#xff0c;一盏清酒消人醉。世无情&#xff0c;冷落对&#xff0c;满怀愁伤…

92. 反转链表 II golang

92. 反转链表 II 注意最后对于链表反转的操作&#xff0c;应该熟记 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m 2, n 4 输出: 1->4->3->2->5->NULL Code …

淡月残残&#xff0c;独孤人无眠&#xff0c;望着窗外漆黑的天&#xff0c;不由想起了家的温暖&#xff0c;心中虽烦&#xff0c;仍忘不了家这片避风湾。家&#xff5e;是风筝牵挂的轴线。思念&#xff01;思念&#xff01;我驾着小船&#xff0c;独自到梦的边源。海水&#xf…

237. 删除链表中的节点 golang

删除链表的节点 https://leetcode-cn.com/problems/delete-node-in-a-linked-list 最优解 把下一个节点的值移动到当前删除节点&#xff0c;然后更改当前节点的Next node.Val node.Next.Valnode.Next node.Next.Nextother p.next p.next.next即可达到删除的目的 /*** Defi…

离殇

那如梦如烟的往昔&#xff0c;或浓或淡&#xff0c;或苦或甜&#xff0c;来不及回头&#xff0c;就远远低抛落了脑后。我说&#xff1b;如果还有如果&#xff0c;我们会不会永远。