当前位置: 首页> 汽车> 车展 > 网络舆情软件免费入口官网_网络销售管理条例_网站推广沈阳_找文网客服联系方式

网络舆情软件免费入口官网_网络销售管理条例_网站推广沈阳_找文网客服联系方式

时间:2025/9/12 10:17:06来源:https://blog.csdn.net/qq_65509025/article/details/147412593 浏览次数: 0次
网络舆情软件免费入口官网_网络销售管理条例_网站推广沈阳_找文网客服联系方式

1、题目描述

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。

示例 1:

输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1

示例 2:

输入:coins = [2], amount = 3输出:-1

示例 3:

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

2、初始思路

2.1 思路

本题的重点为初始化dp数组,dp数组初始化应为float('inf'),而不能初始化为0。

如果你一开始设置所有 dp[i] = 0,那意味着:对于所有金额 i,你都默认「不需要任何硬币就可以凑出来」,这显然不成立。

float('inf') 代表「当前还无法凑出这个金额」。之后通过不断更新(min(dp[j], dp[j - coin] + 1)),来尝试找到更优解(更少的硬币数量)。

唯一的例外是 dp[0] = 0,因为金额为 0 的时候,不需要任何硬币。

2.2 代码

class Solution:def coinChange(self, coins: List[int], amount: int) -> int:dp = [float('inf')] * (amount+1)dp[0] = 0for coin in coins:for j in range(coin, amount+1):dp[j] = min(dp[j],dp[j-coin] + 1)return dp[amount] if dp[amount] != float('inf') else -1

关键字:网络舆情软件免费入口官网_网络销售管理条例_网站推广沈阳_找文网客服联系方式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: