零钱兑换 - LeetCode 热题 85
大家好!我是曾续缘🤪
今天是《LeetCode 热题 100》系列
发车第 85 天
动态规划第 5 题
❤️点赞 👍 收藏 ⭐再看,养成习惯
零钱兑换 给你一个整数数组
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提示:
难度:💖💖
1 <= coins.length <= 121 <= coins[i] <= 231 - 10 <= amount <= 104
解题方法
我们可以使用动态规划来解决这个问题。首先创建一个长度为 amount + 1 的数组 dp,其中 dp[i] 表示凑齐金额 i 所需要的最少硬币个数。初始化将 dp 数组所有元素值设为 amount + 1,这个值相当于无穷大,用来表示不可能凑齐该金额。
然后,我们从金额 1 开始遍历到 amount,对于每个金额 i,再遍历硬币数组 coins 中的每个硬币面额 coins[j]。如果当前硬币面额 coins[j] 小于等于当前金额 i,则更新 dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1),即当前金额 i 所需的最少硬币个数为当前值和减去当前硬币面额后的金额所需硬币个数加一的较小值。
最终返回 dp[amount],如果其值大于 amount,表示无法凑齐该金额,返回 -1;否则返回 dp[amount]。
Code
public class Solution {public int coinChange(int[] coins, int amount) {// 初始化最大值为 amount + 1int max = amount + 1;// 创建 dp 数组,记录凑齐各个金额所需的最少硬币个数int[] dp = new int[amount + 1];// 将 dp 数组所有元素值设为 maxArrays.fill(dp, max);// 初始金额为 0 时,所需硬币个数为 0dp[0] = 0;// 遍历金额从 1 到 amountfor (int i = 1; i <= amount; i++) {// 遍历硬币数组for (int j = 0; j < coins.length; j++) {// 如果当前硬币面额小于等于当前金额if (coins[j] <= i) {// 更新最少硬币个数dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);}}}// 返回最终结果,若大于 amount 则无法凑齐,返回 -1,否则返回 dp[amount]return dp[amount] > amount ? -1 : dp[amount];}
}相关文章:
零钱兑换 - LeetCode 热题 85
大家好!我是曾续缘🤪 今天是《LeetCode 热题 100》系列 发车第 85 天 动态规划第 5 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount &…...
基于web的垃圾分类回收系统的设计
管理员账户功能包括:系统首页,个人中心,管理员管理,用户管理,公告管理,运输管理,基础数据管理 用户账户功能包括:系统首页,个人中心,运输管理,公告…...
优化你的WordPress网站:内链建设与Link Whisper Pro插件的利用
文章目录 内链的重要性WordPress SEO插件:Link Whisper Pro主要功能使用指南下载与安装 结语 在数字营销和网站管理领域,SEO内部优化是提升网站排名、增加流量和提高用户参与度的核心策略。在众多SEO技巧中,内链建设是构建良好网站结构和提升…...
spring中那些地方使用了反射
1、依赖注入(Dependency Injection) Spring Boot通过反射机制将bean注入到相应的属性或构造函数中。当我们在Spring Boot中使用如Autowired这样的注解时,Spring容器会利用反射机制找到相应的bean并注入到对应的属性或构造函数中。 2、Bean的…...
1 机器人软件开发学习所需通用技术栈(一)
机器人软件工程师技术路线(如有缺失,欢迎补充) 1. 机器人软件开发工程师技术路线 1.1 基础知识 C/C编程:掌握C/C语言基础,包括数据结构、算法、内存管理等。操作系统:了解Linux或Windows等操作系统的基本…...
Java(十二)——Comparable接口与Comparator接口
文章目录 Comparable与Comparator接口Comparable接口Comparator接口 Comparable与Comparator接口 我们可能会遇到这样的问题:怎么对一个对象数组进行排序? 比如对一个狗类对象数组进行排序,而想到这,我们又会有一个问题ÿ…...
Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:轨道交通监控系统
株洲中车时代电气股份有限公司(下称中车时代电气)是中国中车旗下股份制企业,其前身及母公司——中车株洲电力机车研究所有限公司创立于1959年。中车时代电气扎根株洲,走好两条钢轨,走出两条钢轨。中车时代电气秉承“双…...
笔记 | 软件工程01:从程序到软件
1 软件工程知识域 2 程序 2.1 何为程序及程序的质量要求 何为程序: 理解:软件工程可能就是在弥补OOP语言与自然语言之间还存在的鸿沟 2.1.1 程序质量的内在和外在体现 2.1.2 程序质量的语法和语义体现 2.2 编写代码的基本原则 2.3 程序质量保证方法 …...
废品回收小程序开发,助力商家拓展回收市场
随着互联网的快速发展,废品回收行业也走向了数字化发展,废品回收小程序成为了拓展市场的重要方式。在当下万亿元下的回收市场中,废品回收小程序的发展也能够发挥重要作用,提高市场回收效率,提高大众的回收意识…...
JVM类加载机制和双亲委派
类加载机制 java文件需要编译成字节码文件(.class文件),jvm是通过类加载机制,将.class文件加载进内存,经过验证连接->初始化直到使用该对象的过程就是类加载机制,当new对象的时候,jvm首先去常量池寻找该类的符号引用…...
【PyCharm】无法创建虚拟环境,提示:has no attribute CPython3macOsBrew
报错信息: AttributeError: module virtualenv.create.via_global_ref.builtin.cpython.mac_os has no attribute CPython3macOsBrew报错原因: 可能含有多个virtualenv,发生冲突了。 解决方法: 终端执行以下命令: p…...
华为OD刷题C卷 - 每日刷题 12(数组连续和,求最多可以派出多少支团队)
1、(数组连续和): 这段代码是解决“数组连续和”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算给定数组中有多少个连续区间的和大于等于给定值x。 main方法首先读取数组的长度n和阈值x&…...
2.1 初识Windows程序
Windows程序设计是一种面向对象的编程。Windows操作系统以数据结构的形式定义了大量预定义的对象作为操作系统的数据类型。Windows动态链接库提供了各种各样的API接口函数供Windows应用程序调用。一个Windows应用程序是运行在Windows操作系统之上的。这些API接口函数的调用所实…...
EDI系统的使用场景
EDI全称Electronic Data Interchange,中文名称是电子数据交换。EDI系统是专为企业间的电子数据传输而设计的,需要满足的基本功能包括:支持AS2、OFTP、SFTP等EDI传输协议,能够生成和解析符合X12、EDIFACT、VDA等EDI报文标准下的报文…...
韩国Neowine推出第三代强加密芯片ALPU-CV
推出第三代加密芯片;是ALPU系列中的高端IC;是一款高性能车规级加密芯片;其加密性更强、低耗电、体积小;使得防复制、防抄袭板子的加密性能大大提升,该芯片通过《AEC-Q100》认证,目前已经在国产前装车辆配件…...
golang结构与接口方法实现与交互使用示例
1.定义结构 // 结构定义 type VideoFrame struct {id inthead []bytelen int64data []byte } 2.实现结构方法 // 生成结构字段的get与set方法 // func (v *VideoFrame) Id() int {return v.id }func (v *VideoFrame) SetId(id int) {v.id id }func (v *VideoFrame) He…...
C# 判断字符串不等于空的示例
在C#中,要判断一个字符串是否不等于空(即它既不是null也不是空字符串""),方法有如下几种,如下。 方法1 使用逻辑运算符和string.IsNullOrEmpty方法 string myString "123"; // 假设要检查的字…...
直方图中最大的矩形
#include<iostream> #include<algorithm> using namespace std; const int N 100010; //l[i], r[i]表示第i个矩形的高度可向两侧扩展的左右边界 int h[N], q[N], l[N], r[N]; typedef long long LL; int main() { int n; while(scanf("%d"…...
分布式锁redisson
1:pom.xml添加依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.21.1</version> </dependency>2-1:方法一:读取默认ym…...
将小爱音箱接入 ChatGPT 和豆包ai改造成专属语音助手
这个GitHub项目,mi-gpt,旨在将小爱音箱和米家设备与ChatGPT和豆包集成,有效地将这些设备转变为个性化语音助手。以下是对其功能和设置的详细分析: 主要特点 角色扮演:该项目允许小爱适应不同的角色,如伴侣…...
基于MATLAB与SVM实现河道水面漂浮物的自动检测与识别
摘要:河道水面漂浮物不仅影响水环境质量,还威胁水利设施安全和水生态健康。传统人工巡检方式效率低、成本高,难以满足大范围、实时化的 监测需求。针对上述问题,本文基于 MATLAB 平台,结合支持向量机(SVM&a…...
雷达目标分类及宽带测角方案设计实现
本文参考,仅供学习使用基于飞腾M6678的雷达目标 分类和宽带测角研究与实现硬件计算平台介绍1. 飞腾M6678芯片核心参数与优势飞腾M6678是国防科技大学自主研发的国产多核DSP,专为数字信号处理设计,核心特性为:硬件资源:…...
手把手教你用STM32CubeMX和HAL库驱动DW3000:从SPI配置到第一个测距Demo
零基础玩转DW3000:STM32CubeMXHAL库实现厘米级UWB测距全指南 当我们需要在仓库里快速定位某个货架上的商品,或是让扫地机器人精准识别家具位置时,传统GPS和蓝牙方案的精度往往捉襟见肘。这正是UWB(超宽带)技术大显身手…...
akdbdudhdhfvf
一、OpenAI 1.OpenAI是什么简单来说,OpenAI 大模型 是由美国人工智能公司 OpenAI 开发的一系列大型语言模型(LLMs) 。你可以把它们想象成拥有巨大“知识储备”和“学习能力”的超级大脑,它们被训练用来理解和生成人类语言…...
Python 中的正则表达式:从基础到高级应用
Python 中的正则表达式:从基础到高级应用 1. 背景介绍 正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于匹配字符串中字符组合的模式。在 Python 中,正则表达式是处理文本的强大工具,它可以…...
OpenBMC实战:phosphor-bmc-code-mgmt仓库代码逻辑全解析(附避坑指南)
OpenBMC实战:phosphor-bmc-code-mgmt仓库代码逻辑全解析(附避坑指南) 在嵌入式系统开发领域,BMC(Baseboard Management Controller)固件的可靠更新机制是确保服务器稳定运行的关键环节。作为OpenBMC项目的核…...
IDM激活开源工具:永久使用Internet Download Manager的完整指南
IDM激活开源工具:永久使用Internet Download Manager的完整指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 当你发现下载工具突然停用࿰…...
从频谱仪读数到测试报告:深入理解dBμV/m、dBm这些单位在EMC辐射发射测试中的真实含义
从频谱仪读数到测试报告:深入理解dBμV/m、dBm这些单位在EMC辐射发射测试中的真实含义 在电磁兼容(EMC)测试实验室里,工程师们每天都要面对频谱分析仪上跳动的数字——那些以dBμV/m、dBm为单位的读数,直接决定着产品能…...
双偏振雷达数据质控:核心算法原理与 Python 实现
双偏振雷达作为气象观测核心设备,可同步获取Z、V、W及Zdr、Фdp、Kdp、ρhv等多维度参量,为降水监测、灾害预警提供精准数据支撑。但受接收机性能偏差、电磁干扰、地物 / 晴空杂波等因素影响,原始双偏振参量存在大量噪声、异常值,…...
如何用OpCore-Simplify在30分钟内完成黑苹果配置:自动化OpenCore EFI工具终极指南
如何用OpCore-Simplify在30分钟内完成黑苹果配置:自动化OpenCore EFI工具终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复…...
