Leetcode 322.零钱兑换
Time: 20190906
Type: Medium
题目描述
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。
示例 1:
输入: coins = [1, 2, 5], amount = 11
输出: 3
解释: 11 = 5 + 5 + 1
示例 2:
输入: coins = [2], amount = 3
输出: -1
说明:
你可以认为每种硬币的数量是无限的。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/coin-change
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
状态定义
f[i]
表示到总额度为i
时使用的硬币数量。
状态转移方程
当前硬币可以有两种选择:
- 取
- 不取
f[i] = min(f[i], f[i-coin] + 1)
最后再根据结果判断是不是真的可以凑成这样的零钱方案。
代码
class Solution:def coinChange(self, coins: 'List[int]', amount: 'int') -> 'int':f = [float("inf")] * (amount + 1)f[0] = 0for i in range(1, amount + 1):for coin in coins:if i - coin >= 0:f[i] = min(f[i], f[i-coin] + 1)return f[-1] if f[-1]!= float("inf") else -1
PS.本题解法众多,值得深究一下其他解法,比如带备忘录的自顶向下动态规划法。
END.
Leetcode 322.零钱兑换相关推荐
- leetcode: 322.零钱兑换
322.零钱兑换 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/coin-change/ 给你一个整数数组 coins ,表示不同面额的硬币:以及一 ...
- LeetCode 322. 零钱兑换(DP)
文章目录 1. 题目信息 2. 解题 2.1 回溯穷举 2.2 动态规划 1. 题目信息 给定不同面额的硬币 coins 和一个总金额 amount. 编写一个函数来计算可以凑成总金额所需的最少的硬币 ...
- golang力扣leetcode 322.零钱兑换
322.零钱兑换 322.零钱兑换 题解 代码 322.零钱兑换 322.零钱兑换 题解 //state: dp[i]金额为i时所需最少硬币个数 //function: dp[i]=dp[i-n]+1 ...
- Java实现 LeetCode 322 零钱兑换
322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输 ...
- [LeetCode] 322.零钱兑换 五种方法讲解
322.零钱兑换 五种方法讲解 文章目录 322.零钱兑换 五种方法讲解 1 问题描述 2 问题分析 3 解决策略 3.1 递归-暴力解决 3.2 递归-加入存储 3.3 BFS 3.4 动态规划-自 ...
- LeetCode 322. 零钱兑换
322. 零钱兑换 难度 中等 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额. 计算并返回可以凑成总金额所需的 最少的硬币个数 .如果没有任何一种硬币组 ...
- Leetcode.322 零钱兑换
索引iii表示 amountamountamount 金额,dp[i]dp[i]dp[i] 表示最少 coinscoinscoins 个数. 递归 class Solution {int res = ...
- leetcode 322. 零钱兑换 思考分析
目录 1.题目 2.思路分析 3.参考链接 1.题目 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总 ...
- 99. Leetcode 322. 零钱兑换 (动态规划-完全背包)
步骤一.确定状态: 确定dp数组及下标含义 dp数组是个amout+1的数组,dp[j]表示的是装满容量为j的背包所需要的最 少物品的个数 步骤二.推断状态方程: 对于当前物品i, 有两种选择决定了d ...
最新文章
- 分享个网盘,个人觉得很不错!
- 26期20180628 shell 命令操作 通配符 输出输入重定向
- java 能不能回收 文件流_Java文件流关闭和垃圾回收机制
- [JS] - onmusewheel事件(兼容IE,FF,opera,safari,chrome)
- Express请求处理-静态资源的处理
- error C3872: '0x3000': this character is not allowed in an identifier 解决方法
- StackExchange.Redis 使用-配置
- 博士论文:教你如何给女朋友送礼物
- P4590-[TJOI2018]游园会【dp套dp】
- 使用opencv和python实现图像的智能处理_机器学习:使用opencv和python进行智能图像处理...
- 在网页在播放flv格式的视频
- android 常用软件包
- VirtualBox 安装增强功能
- React+Antd兼容ie浏览器,360安全浏览器兼容模式
- 温度转换 python
- Because You Loved Me歌词
- 涅普之rce(远程代码控制)
- 第二章补充____微分中值定理及导数应用
- Nginx反向代理到另外一台服务器,域名解析IP变更后连接超时
- 老毛子(华硕)固件ipv6及dmz主机设置
热门文章
- python爬虫对比_Python六大框架对比,Web2py略胜一筹|python爬虫|python入门|python教程...
- 企业信息化投入中咨询服务_嘉萱企业管理咨询服务 让发展中的企业真正实现全面性效益增长...
- C++为什么空格无法输出_那些C/C++程序员该具备的32个编程修养习惯!
- java关键字static_Java中的static关键字
- jQuery first()和last()函数示例
- scala 提取器模式匹配_Scala提取器应用,取消应用和模式匹配
- Spring Boot –无法确定数据库类型NONE的嵌入式数据库驱动程序类
- 开课吧:AI智能语言产品会运用到哪些技术?
- Java开发大厂面试资料,让你的面试不再困难!
- Java基础:什么是返回对象