[Leetcode] 322. Coin Change 解题报告

算法——Coin-row problem(币值最大化问题) 题目描述 There is a row of n coins whose values are some positive integers c₁, c₂,...,cn, not necessarily distinct. The goal is to pick up the maximum amount of money subject to the constraint that no tw... 阅读详情

题目:

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.

Example 1:
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)

Example 2:
coins = [2], amount = 3
return -1.

Note:
You may assume that you have an infinite number of each kind of coin.

思路:

一道难度适中的动态规划题目。定义dp[i]表示要凑够i块钱需要的最小硬币数量,则状态转移方程为:dp[i] = min(dp[i - coins[j]] + 1), 0 <= j < coins.size()。在实现的时候需要注意两个合法条件:1)i - coins[j] 必须大于等于0,并且dp[0]要初始化为0;2)dp[i - coins[j]]必须是已经被计算过的合法数。该算法的时间复杂度是O(amount * coins.size()),空间复杂度是O(amount)。

代码:

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<int> dp(amount + 1, INT_MAX);
        dp[0] = 0;
        for (int i = 1; i <= amount; ++i) {
            for (int j = 0; j < coins.size(); ++j) {
                if (i - coins[j] >= 0 && dp[i - coins[j]] != INT_MAX) {
                    dp[i] = min(dp[i], dp[i - coins[j]] + 1);
                }
            }
        }
        return dp[amount] == INT_MAX ? -1 : dp[amount];
    }
};
LeetCode 322 Coin Change (python) 目录LeetCode 322 Coin Change (python)分析状态定义状态转移Code欢迎一起来参与leetcode刷题项目 LeetCode 322 Coin Change (python) 分析 这题本质上是一个完全背包问题,我们有给定面额的货币,用它们得到一个金额,每种面额的货币使用数量不限。很明显了,完全背包 状态定义 既然是背包问题,现在再来看看怎么定义状态。依然很明显。==... 阅读详情

相关推荐

LeetCode刷题:322. Coin Change

LeetCode刷题:322. Coin Change 原题链接:https://leetcode.com/problems/coin-change/ You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest ...

梅森上校的博客 业精于勤荒于嬉,形成于思毁于随。 430

LeetCode 322. Coin Change Python 动态规划/BFS解法

题目描述 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

小鹅鹅的博客 4178

Matlab实战:用DQN算法让机器人学会自主避障(附完整代码)

本文详细介绍了如何使用Matlab实现DQN(深度Q网络)算法,使机器人在复杂环境中学会自主避障。通过环境建模、网络架构设计、奖励函数优化及实战调试,提供了完整的代码实现和训练策略,帮助开发者快速应用于机器人路径规划项目。

t8u9v0w1x的博客 232

leetcode 322. Coin Change 解题报告

原题链接原题链接解题思路题目很熟悉,和以前做过的一道很类似,于是想都没想就知道肯定是动态规划。 建立一个dp数组。dp[i]表示当凑齐i时最少要多少个数字组成。状态转移方程dp[i] = Math.min(dp[i-k] + 1,dp[i]); 解释一下吧,dp[i-k]只要不等于Integer.MAX_VALUE,证明凑齐i-k,有解。并且前面已经算出来了,这时候再加上k的1位数字就行。为了保

jly0612的博客 1357

STM32_DAC

DAC(Digital-to-Analog Converter,数模转换器)是将数字信号转换为模拟信号的外设,广泛应用于音频输出、波形生成、电机控制等场景。STM32F407 系列芯片配备了 2 个 DAC 通道(DAC1 和 DAC2),支持 12 位分辨率,支持多种触发方式,可输出稳定的模拟电压。本文从 DAC 的基本原理出发,详细讲解 STM32F407 DAC 的配置方法、代码实现、波形生成以及实际应用案例,帮助你快速掌握 DAC 的使用技巧。

轩宇的博客 1239

Cesium实战:全球海洋动态水面与自定义区域波浪效果实现

本文详细介绍了在Cesium中实现全球海洋动态水面与自定义区域波浪效果的实战方法。通过解析核心概念Primitive与Geometry,并深入讲解Water材质的关键参数调节,指导开发者快速创建逼真的动态海洋。文章重点阐述了如何利用多边形坐标定义不规则图形区域,实现精准的局部水域波浪效果,并提供了性能优化与视觉提升的实用技巧。

weixin_29256771的博客 501

Coin Change解题报告

https://leetcode.com/problems/coin-change/ 这道题其实也相当于是动态规划中的记事本问题。给定硬币的数量集合,要求一个钱数能够硬币求和的最小硬币数。我们可以先设置一个数组,来表示i钱数能够被res[i]个硬币组合。那么res[i]=min(res[i],res[i-coin[j]]+1) class Solution { public: in

lynne233 846

银河麒麟V10搭建vsftpd

1、查看是否有安装过2、安装3、服务启动步骤设置开机启动并此次立即启动启动重启停止查看状态4、系统防火墙放行ftp服务如果没有重要的数据在服务器里面,或者在本地虚拟机中外网无法访问的情况下,建议直接关闭防火墙即可省略以上繁琐的步骤。

hhq850741642的博客 6481

动态规划之路之硬币 Coin Changing problem

题目:给定m种硬币,支付n元所需硬币最少个数。各面值课重复使用。 贪心算法从面值大的开始减。对于某些特殊问题不行 动态规划解题: 两个数组 C[m] 表示第i枚硬币的面值 T[m][n+1] 表示使用第i种硬币支付j元需要的最少硬币数 动态规划递归方程: T[i][j] = min(T[i-1][j],T[i][j-C[i]]+1) ...

hanyanwei123的博客 1058

代谢组数据分析(零):从质谱样本制备到MaxQuant搜库(蛋白质组和代谢组)

本文详细介绍了代谢组数据分析的过程,从LC-MS/MS技术的样本制备、分离、质谱鉴定到MaxQuant软件的使用。LC-MS/MS包括样本制备、液相色谱分离、质谱上机和鉴定等步骤。MaxQuant在蛋白质定性和定量中扮演关键角色,通过搜库和数据处理提供精准结果。此外,文章还涉及了数据采集模式、质谱图谱解析、数据库和软件选择以及结果评估等方面

专注生信领域 8587

Cadence OrCAD Capture原理图中为功能模块分配ROOM的方法

本文详解介绍原理图设计阶段为原理图模块分配ROOM的方法。

fydar的博客 1345

[leetcode] 322. Coin Change 解题报告

题目链接:https://leetcode.com/problems/coin-change/ 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

小榕流光的专栏 1170

反应动力学仿真软件:CHEMKIN_(12).CHEMKIN与其他软件的接口

通过上述介绍,我们详细探讨了如何将 CHEMKIN 与 MATLAB、Python、COMSOL、Aspen Plus 和 Ansys Fluent 等软件工具进行接口配置和数据交互。这些接口不仅能够显著提升 CHEMKIN 在反应动力学仿真中的应用效果,还能充分利用其他软件工具的强大功能,实现更复杂的数据处理和分析。希望这些内容对您在化学反应动力学仿真中的工作有所帮助。

kkchenjj的博客 1138

【LeetCode】322. Coin Change 解题报告(Python & C++)

作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录题目描述题目大意解题方法动态规划相似题目参考资料日期 题目地址:https://leetcode.com/problems/coin-change/description/ 题目描述 You are given coins of different denominations an...

负雪明烛 5085

【数据集】中国2003年至2022年全天空每日气温数据集

中国2003年至2022年全天空每日气温数据集

WW、forever的博客 602

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode解题报告 322. Coin Change [medium]

题目描述 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

conniemessi的博客 400

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LeetCode 322. Coin Change 题解

本题是动态规划的经典应用问题,主要考察对动态规划思想的理解和使用。通过使用动态规划,我们可以高效地计算凑成总金额所需的最少硬币个数。动态规划的核心思想是:定义一个数组dp,其中dp[i]表示凑成金额i所需的最少硬币个数,然后遍历每个金额,更新dp数组。这种方法不仅适用于硬币兑换问题,还可以应用于许多其他类似的问题,例如完全背包问题。掌握动态规划的思想,对于解决这类问题非常重要。

cannonjinx的博客 4376

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

leetcode学习笔记322 Coin Change

leetcode学习笔记322问题思考方法1 问题 Coin Change 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

kuma的博客 180

leetcode题集: 322. Coin Change

实在是太懒了,写博客真的懒得写。今天就一起写几篇动态规划的好了 第9题:322.Coin Change 题目大意:就是换零钱!给出可换的零钱种类,求最后换得零钱的最小张数(coin的个数),每种可换的零钱数目无限。 题目分析:思路很明确,就是找零钱从最大的开始找呗,依次找当前可换的最大数额的零钱,显然可以用动态规划的思想解决,是一个很简单的动态规划问题,状态转移方程: ...

wx_14678的博客 245

Leetcode322. Coin Change-动态规划

Leetcode322. Coin ChangeLeetcode322. Coin Change题目思路回头看的最佳选择复杂度代码 Leetcode322. Coin Change 题目 题目链接 思路 将目标数额记为amount,拥有的面值包含在coins中 从1到amount,每个数额都至少由一个coin组成,那剩下的是left = amount-coin,left的计算也由同样方式得出 如amount=10,coins = [1, 2, 5]: 10可以由9+1,8+2,5+5组成,那么在这三个中,取

qq_17065591的博客 408

LeetCode-322. Coin Change [C++][Java]

Returnthe 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.

贫道绝缘子的博客 530

【LeetCode】322. Coin Change

322.Coin Change Description: You are given coins of different denominations and a total amount of moneyamount. Write a function to compute the fewest number of coins that you need to make up that ...

Microstrong 690

leetcode 322. Coin Change

一、题意 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 二、解法 解法: 动态规划 dp[i]表示金额为i的最少需要的硬币有多少个 dp[i]=min(dp[i],dp[i-coins[j]]+dp[coins[j]]),dp[i]>0。从1开始到i求dp[i],就可以将i之间的结果都求好,dp[i]即为结果。 时

Genius_J的博客 439
上一篇: [Leetcode] 321. Create Maximum Number 解题报告
下一篇: [Leetcode] 323. Number of Connected Components in an Undirected Graph 解题报告
魔豆Magicbean
博客等级 码龄19年 146粉丝 742原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值