322. Coin Change -Medium
来源:互联网 发布:萌乐网络 编辑:程序博客网 时间:2024/06/05 13:24
Question
You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.
给你一组不同面额的钱以及资金总额。找到使用硬币组合成该资金总额的最少数量。如果没法组合得到,返回-1
Example
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)
coins = [2], amount = 3
return -1.
Solution
动态规划解。定义dp[i]:使用硬币组合成资金总额i的最少数量,递推关系式:dp[i] = min(dp[i - coin]) + 1 (coin in coins)。因为dp[i]都需要加上硬币面额中的一个(当然硬币面额一定要小于资金总额),所以我们只要找出到底加上哪个硬币面额使用硬币数量最少即可。对于没法组合得到的资金总额,我们只需初始化的时候设置一个固定较大值,它并不会被更新到
class Solution(object): def coinChange(self, coins, amount): """ :type coins: List[int] :type amount: int :rtype: int """ dp = [0] + [amount + 1] * amount for a in range(1, amount + 1): for c in coins: # 只对小于amount的硬币进行判断 if a >= c: dp[a] = min(dp[a], dp[a - c] + 1) # 如果amount不能被硬币组合得到,那么它对应的d[amount]不会更新 return dp[amount] if dp[amount] != amount + 1 else -1
0 0
- 322. Coin Change -Medium
- Leetcode 322. Coin Change (Medium) (cpp)
- LeetCode解题报告 322. Coin Change [medium]
- LeetCode 322. Coin Change(java medium)
- Leetcode: 322. Coin Change(Week8, Medium)
- [Medium]Coin Change
- 第十七周 leetcode 322. Coin Change(Medium)
- [leetcode] 322. Coin Change
- leetcode 322. Coin Change
- Leetcode 322. Coin Change
- Leetcode 322. Coin Change
- 322. Coin Change
- 322. Coin Change LeetCode
- 322. Coin Change
- 322. Coin Change
- LeetCode *** 322. Coin Change
- 322. Coin Change
- LeetCode 322. Coin Change
- 一文读懂 CNN、DNN、RNN 内部网络结构区别
- 《新手养成记》--第一篇 iOS手机号正则判断和获取验证码
- ubuntu安装mysql,远程登录mysql
- web接口测试之GET与POST请求
- IntelliJ IDEA SVN的使用技巧,你都知道了吗
- 322. Coin Change -Medium
- Oracle之唯一性约束(UNIQUEConstraint)用法详解
- Error与Exception的区别
- 指针和引用的区别
- 各种数据结构的比较
- PHP5.6.x编译报错:Don't know how to define struct flock on this system, set --enable-opcache=no
- 作业里出来这一题:C#解上海世博会棒×会=棒上海世博会 每个汉字代表0—9中的不同数字 请问 上海世博会棒 这6个字各代表几?
- 69道spring面试题及答案
- CDH - 简单记录下开启Alert报警功能