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

518. 零钱兑换 II

给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。

示例 1:

输入: amount = 5, coins = [1, 2, 5]
输出: 4
解释: 有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
示例 2:

输入: amount = 3, coins = [2]
输出: 0
解释: 只用面额2的硬币不能凑成总金额3。
示例 3:

输入: amount = 10, coins = [10]
输出: 1

注意:

你可以假设:

0 <= amount (总金额) <= 5000
1 <= coin (硬币面额) <= 5000
硬币种类不超过 500 种
结果符合 32 位符号整数

代码

func change(amount int, coins []int) int {dp := make([]int, amount+1)dp[0] = 1// 判断是外循环还是内循环, 完全背包问题(硬币可以重复使用)for _, coin := range coins {for i := coin; i <= amount; i++ { // 从coin开始遍历,小于coin的值没有意义dp[i] = max(dp[i], dp[i] + dp[i-coin])//dp[i] += dp[i-coin]}}return dp[amount]
}func max(n, m int) int {if n > m {return n} else {return m}
}

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

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

相关文章

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;我们会不会永远。

100. 相同的树 golang

100. 相同的树 给定两个二叉树&#xff0c;编写一个函数来检验它们是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1: 输入: 1 1/ \ / \2 3 2 3[1,2,3], [1,2,3]输出: true 示例…