发布时间:2026/9/3 5:52:41
动态规划:最少硬币凑金额问题详解 LeetCode322给你一个整数数组coins表示不同面额的硬币以及一个整数amount表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额返回-1。你可以认为每种硬币的数量是无限的。示例 1输入coins [1, 2, 5], amount 11输出3解释11 5 5 1示例 2输入coins [2], amount 3输出-1Python解法动态规划class Solution: def coinChange(self, coins: List[int], amount: int) - int: # INF代表一个不可能达到的硬币数量用来标记该金额无法凑出 # 最多全用1元硬币只需要amount枚amount1一定达不到充当无穷大 INF amount 1 # 创建dp数组dp[x]表示凑出金额x所需最少硬币数 # 数组长度amount1覆盖0~amount所有金额初始全部填充INF默认都凑不出来 dp [INF] * (amount 1) # 边界条件金额为0时不需要任何硬币硬币数量为0 dp[0] 0 # 外层循环遍历从1到amount的每一个目标金额逐个计算最少硬币 for i in range(1, amount 1): # 内层循环尝试每一种硬币看能否用当前硬币更新dp[i] for coin in coins: # 当前硬币面额不能大于当前要凑的金额i否则不能选这枚硬币 if coin i: # 两种选择取最小值 # 1. dp[i]不选当前硬币维持原来的最少硬币数 # 2. dp[i - coin] 1选当前硬币先凑i-coin再加这1枚硬币 dp[i] min(dp[i], dp[i - coin] 1) # 判断最终结果 # 如果dp[amount]还是INF说明无法凑出目标金额返回题目要求的-1 # 否则dp[amount]就是凑出amount的最少硬币数量直接返回 return -1 if dp[amount] INF else dp[amount]Java解法动态规划class Solution { public int coinChange(int[] coins, int amount) { // INF 充当无穷大最多全1元硬币只需amount枚amount1一定达不到标记无解 int INF amount 1; // dp数组dp[money] 凑出金额money所需最少硬币数量 int[] dp new int[amount 1]; // 全部初始化为无解标记INF Arrays.fill(dp, INF); // 边界条件金额0不需要硬币数量为0 dp[0] 0; // 外层循环依次计算1 ~ amount每一个金额的最少硬币数 for (int money 1; money amount; money) { // 内层循环遍历每一种硬币尝试用该硬币更新当前金额的最优解 for (int c : coins) { // 硬币面额不能超过当前要凑的金额否则无法选取该硬币 if (money c) { // 两种方案取最小值 // 方案1dp[money]不使用当前硬币保持原有最优值 // 方案2dp[money - c] 1使用当前硬币先凑money-c再加1枚当前硬币 dp[money] Math.min(dp[money], dp[money - c] 1); } } } // 三元判断返回结果 // 若dp[amount]仍等于INF说明无法凑出目标金额返回题目规定的-1 // 若不等于INFdp[amount]就是凑出amount的最少硬币数量直接返回 return dp[amount] INF ? -1 : dp[amount]; } }C解法动态规划class Solution { public: int coinChange(vectorint coins, int amount) { // INF充当无穷大标记最多全用1元硬币仅需amount枚amount1不可能达到代表无解 int INF amount 1; // dp数组dp[money]表示凑出金额money需要的最少硬币数量 vectorint dp(amount 1, INF); // 边界条件金额为0时不需要任何硬币硬币数为0 dp[0] 0; // 外层循环逐个计算1 ~ amount所有金额的最少硬币数 for (int money 1; money amount; money) { // 内层循环遍历每一种硬币尝试用当前硬币更新最优解 for (int c : coins) { // 硬币面额不能超过当前要凑的金额否则无法选用该硬币 if (money c) { // 两种方案取更小值 // 1. dp[money]不选当前硬币保留原有最优硬币数 // 2. dp[money - c] 1选当前硬币凑完money-c后再加这一枚硬币 dp[money] min(dp[money], dp[money - c] 1); } } } // 三元表达式返回结果 // dp[amount]等于INF说明无法凑出目标金额返回-1否则返回最少硬币数量 return dp[amount] INF ? -1 : dp[amount]; } };

相关新闻

2026/9/1 2:30:38

计算机毕业设计之基于springboot实现的个人健康管理系统

系统根据现有的管理模块进行开发和扩展,采用面向对象的开发的思想和结构化的开发方法对个人健康管理的现状进行系统调查。采用结构化的分析设计,该方法要求结合一定的图表,在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的思…

2026/9/1 19:45:35

大同光子嫩肤淡化色斑名声

光子嫩肤作为轻医美入门项目,已经普及到“家喻户晓”的程度。但正因为太常见,市面上才充斥各种“低价引流”“翻新设备”“不分区治疗”的乱象。尤其是针对色斑问题,很多人做完不仅没淡,反而反黑、敏感。今天,我不推荐…

2026/8/31 19:25:52

独立站建设:外贸企业拓展海外市场的基础路径

在外贸企业的海外市场拓展中,独立站建设正逐步从补充渠道演变为基础阵地之一。与依托第三方平台相比,独立站为企业提供了更自主的内容呈现空间和更灵活的品牌表达方式。乐云SEO在服务多家制造型企业过程中观察到,独立站建设并非上线即见效&am…

2026/9/3 5:52:28

知识产权入门 —— 商标

简易商标了解一、什么是商标识别特定个人或企业商品/服务的标志核心作用:区分自身与他人的商品或服务举例:DELL(戴尔)(计算机及其相关产品商品商标)、CITY BANK(花旗银行)&#xff0…

2026/9/3 5:52:28

Overleaf + DeepSeek Harness:AI辅助LaTeX论文写作工作流实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/2 9:00:32

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/2 8:41:06

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/3 0:02:06

零基础装 OpenClaw 小龙虾 AI:Windows 一键部署教程与避坑要点

Windows 部署 OpenClaw 完整教程|本地 AI 智能体 5 分钟落地,环境配置一次搞定 版本说明:Windows 3.1.0 / Mac 2.7.9 写在前面 近两年开源 AI 领域有一款被称作「数字员工」的工具持续走热,它就是 OpenClaw,圈内人更习…

2026/9/3 0:02:06

Hermes Agent 本地部署新方案:Windows 整合包减少依赖报错

Windows 本地部署 Hermes 太麻烦?这版一键包 5 分钟快速跑通 很多人想体验 Hermes Agent,但真正开始部署时,往往会卡在环境配置这一步。 需要安装各类依赖、调试运行环境、处理路径问题,还容易遇到命令行报错、系统拦截、文件缺…

2026/9/3 0:02:06

实测 OpenClaw 一键包,5 分钟完成本地自动化环境搭建

OpenClaw 本地 AI 自动化工具部署指南|使用一键包规避环境配置难题 痛点:部署 AI 自动化工具常常要处理 Python、Node.js 各类依赖,版本冲突、环境配置耗费大量时间,OpenClaw 提供一键安装包,降低部署门槛。 适配系统&…

2026/9/2 1:15:22

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/2 1:15:22

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/2 1:15:20

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…