当前位置: 首页 > ds >正文

【leetcode100】零钱兑换

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

http://www.xdnf.cn/news/1164.html

相关文章:

  • Oracle高级语法篇-分析函数详解
  • ORA 600 [qkaQknLTPruneKaf:1] BUG 分析与处理
  • RSGISLib:一款功能强大的GIS与RS数据处理Python工具包
  • 【深度学习新浪潮】新视角生成的研究进展调研报告(2025年4月)
  • 具身智能的理论基础
  • 2025年五大ETL数据集成工具推荐
  • MongoDB索引
  • 智能座舱测试内容与步骤
  • 影刀RPA怎么和AI结合,制作自动采集小红书爆款文章+自动用AI改写标题、内容+用AI文生图生成发文图片+自动在小红书上发布文章
  • PyTorch 多 GPU 入门:深入解析 nn.DataParallel 的工作原理与局限
  • 基于贝叶斯优化的Transformer多输入单输出回归预测模型Bayes-Transformer【MATLAB】
  • 三网通电玩城平台系统结构与源码工程详解(五):客户端热更机制与多端资源分发流程
  • AI 技术发展:从起源到未来的深度剖析
  • 电容加速电路!
  • 二、Python编程基础02
  • 【机器学习-线性回归-2】理解线性回归中的连续值与离散值
  • Spring XML 配置
  • Kotlin集合全解析:List和Map高频操作手册
  • LM35 温度传感器介绍
  • 学习前端(前端技术更新较快,需持续关注技术更新)
  • 深入探讨:如何完美完成标签分类任务(数据治理中分类分级的分类思考)
  • 短信验证码安全实战:三网API+多语言适配开发指南
  • 网络原理 - 4(TCP - 1)
  • 短视频+直播商城系统源码全解析:音视频流、商品组件逻辑剖析
  • 【Linux】46.网络基础(3.3)
  • 何东山团队提到的“真正真空”(zero-point-free vacuum)
  • 3.1goweb框架gin下
  • 中文通用embedding:BGE
  • 使用Spark-TTS-0.5B模型,文本合成语音
  • HCIP(综合实验2)