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

【LeetCode】【算法】322. 零钱兑换

LeetCode 322. 零钱兑换

题目

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。
计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1。
你可以认为每种硬币的数量是无限的。
示例:
输入:coins = [1, 2, 5], amount = 11
输出:3
解释:11 = 5 + 5 + 1

思路

思路:动态规划,dp[]数组表示组成金额i需要的最少硬币个数

  1. 数组初始化:Arrays.fill(dp, amount + 1); 相当于给一个最大值,便于后面比较得到最少硬币枚数。dp[0]=0,组成金额0只需要0枚硬币
  2. 嵌套循环:
    I. 第一个循环for(int i=1; i<amount+1; i++)从金额1~金额i,最少的硬币数量
    II. 第二个循环for (int coin:coins),假设使用该面额的硬币,能否组成目标金额。里面的条件是if(coin <= i),因为如果coin>i那么这枚硬币肯定用不上
    在if语句中,dp[i]=Math.min(dp[i-coin]+1,dp[i]),这个递推式的意思是说:如果使用coin的话,此时硬币数量就=1+金额(i-coin)的最少硬币数量,看看dp[i]本身和dp[i-coin]+1哪个更小。
  3. return dp[amount] > amount ? -1 : dp[amount]; 也就是如果dp[amount]没有变化,那就表示没有解,否则返回解

结果

class Solution {public int coinChange(int[] coins, int amount) {if (amount == 0) return 0;// 贪心 -> 不可行,因为最优解未必通过贪心结果组成。如果贪心最大面值的硬币,结果可能是由部分小硬币组成的(因为大硬币无法组成目标面额)int[] dp = new int[amount + 1]; // 动态规划数组表示组成目标金额需要几枚硬币// 初始化dp数组Arrays.fill(dp, amount + 1);dp[0] = 0; // 如果组成金额0需要0枚硬币for (int i = 1; i < amount + 1; i++) {for (int coin : coins) { // 每个面额下的硬币if (coin <= i){ // 如果硬币面额 < 当前所需组成的amount// 要么使用coin:此时硬币数量=1+(目标amount-指定面额)硬币数量// 要么不用coin:此时硬币数量=目标amount硬币数量dp[i] = Math.min(dp[i - coin] + 1, dp[i]);}}}return dp[amount] > amount ? -1 : dp[amount];}
}

相关文章:

【LeetCode】【算法】322. 零钱兑换

LeetCode 322. 零钱兑换 题目 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回-1。 你可以认为每…...

人工智能技术:未来生活的“魔法师”

想象一下&#xff0c;未来的某一天&#xff0c;你醒来时&#xff0c;智能助手已经为你准备好了早餐&#xff0c;你的智能家居系统根据你的心情和日程安排调整了室内的光线和音乐&#xff0c;而你的自动驾驶汽车已经在门口等你。这不是科幻小说&#xff0c;这是人工智能技术为我…...

docker加载目录中所有的镜像

docker加载目录中所有的镜像 首先我们知道读取单个命令如下: docker load -i example_image.tar.gz读取两三个也是: docker load -i image1.tar.gz image2.tar.gz image3.tar.gz但是如果是几十个&#xff0c;那么上面的命令就显得捉襟见肘了&#xff1b;比如当前我有个image…...

使用免费的飞书机器人,实现消息推送实时通知

大家好&#xff0c;我是小悟。 实际工作中&#xff0c;我们会经常遇到需要给用户发送业务通知的功能需求&#xff0c;如果是小程序端&#xff0c;那么就使用小程序提供的模板消息通知&#xff0c;如果是APP端&#xff0c;一般就是使用个推、极光等第三方平台。 当然还有个万能…...

各种网络设备的工作原理

网络设备的工作原理涉及多种设备&#xff0c;包括路由器、交换机、防火墙等&#xff0c;它们各自承担着不同的功能。以下是对这些设备工作原理的详细解释&#xff1a; 一、路由器路由器是互联网通信中的关键设备&#xff0c;它负责在不同网络之间传输数据包。功能&#xff1a;路…...

FilterListener组件

文章目录 Java Web三大组件一、Filter概述二、Filter开始1_过滤器API介绍2_过滤器开发步骤3_代码实现4_过滤器执行流程小结 三、使用细节1_生命周期2_拦截路径3_过滤器链 四、Listener1_Listener概述2_监听器举例3_Listener开始4_案例:模拟spring框架 Java Web三大组件 组件: 是…...

使用Ubuntu快速部署MinIO对象存储

想拥有自己的私有云存储&#xff0c;安全可靠又高效&#xff1f;MinIO是你的理想选择&#xff01;这篇文章将手把手教你如何在Ubuntu 22.04服务器上部署MinIO&#xff0c;并使用Nginx反向代理和Let’s Encrypt证书进行安全加固。 即使你是新手&#xff0c;也能轻松完成&#xf…...

基于Liquid State Machine的时间序列预测:利用储备池计算实现高效建模

Liquid State Machine (LSM) 是一种 脉冲神经网络 (Spiking Neural Network, SNN) ,在计算神经科学和机器学习领域中得到广泛应用,特别适用于处理 时变或动态数据。它是受大脑自然信息处理过程启发而提出的一种 脉冲神经网络 。 设想你正处于一片平静的湖面,四周环绕着高山,你向…...

oracle使用CTE递归分解字符串

oracle使用CTE递归分解字符串 背景 给定一个不定长度字符串 并且以&#xff0c;分割例如 ‘1&#xff0c;2&#xff0c;3&#xff0c;4’ 使用sql查询 返回1&#xff0c;2&#xff0c;3&#xff0c;4四行 如果‘1&#xff0c;2’ 则返回 1&#xff0c;2 两行 使用sql实现 实…...

华为HarmonyOS借助AR引擎帮助应用实现虚拟与现实交互的能力5-识别平面语义

对于检测到的平面&#xff0c;您可以通过AR Engine识别该平面的语义&#xff0c;包括墙面、地面、座椅面、桌面、天花板、门面、窗面、床面。 创建AR会话 创建AR会话并配置为平面语义识别模式。 AREngine_ARSession *arSession nullptr;// 创建AR会话。HMS_AREngine_ARSessi…...

MAC 安装 brew及其常用命令

​文章&#xff1a;Mac安装brew的四种方法&#xff08;指定能行&#xff09; 以下是在 Mac 上使用 Homebrew 清理缓存和无用包的详细指南&#xff1a; 1. 查看系统状态 # 诊断系统问题 brew doctor# 查看已安装的包 brew list# 查看系统占用空间 brew cleanup -n # 预览需要…...

nVisual标签打印模块的部署与使用

部署 标签打印模块部署需要注意的是 前置条件 标签打印模块是以外部模块形式依附于nVisual主模块的&#xff0c;所以要先部署好nVisual主模块的前后端程序。 部署文件下载 标签打印模块也分前端文件和后端文件&#xff0c;从微盘->软件发布->nVisual official relea…...

python NLTK快速入门

目录 NLTK简介安装NLTK主要模块及用法 词汇与语料库分词与词性标注句法分析情感分析文本分类综合实例&#xff1a;简单的文本分析项目总结 1. NLTK简介 NLTK&#xff08;Natural Language Toolkit&#xff09;是一个强大的Python库&#xff0c;专门用于自然语言处理&#xff…...

技术速递|.NET 9 中 System.Text.Json 的新增功能

作者&#xff1a;Eirik Tsarpalis - 首席软件工程师 排版&#xff1a;Alan Wang System.Text.Json 的9.0 版本包含许多功能&#xff0c;主要侧重于 JSON 架构和智能应用程序支持。它还包括一些备受期待的增强功能&#xff0c;例如可空引用类型支持、自定义枚举成员名称、无序元…...

LLM 使用 Elastic 实现可观察性:Azure OpenAI (二)

作者&#xff1a;来自 Elastic Muthukumar Paramasivam•Lalit Satapathy 我们为 Azure OpenAI GA 包添加了更多功能&#xff0c;现在提供提示和响应监控、PTU 部署性能跟踪和计费洞察&#xff01; 我们最近宣布了 Azure OpenAI 集成的 GA。你可以在我们之前的博客 LLM 可观察性…...

数据库基础(2) . 安装MySQL

0.增加右键菜单选项 添加 管理员cmd 到鼠标右键 运行 reg文件 在注册表中添加信息 这样在右键菜单中就有以管理员身份打开命令行的选项了 1.获取安装程序 网址: https://dev.mysql.com/downloads/mysql/ 到官网下载MySQL8 的zip包, 然后解压 下载后的包为: mysql-8.0.16-…...

高效自动化测试,引领汽车座舱新纪元——实车篇

引言 作为智能网联汽车的核心组成部分&#xff0c;智能座舱不仅是驾驶者与车辆互动的桥梁&#xff0c;更是个性化、智能化体验的源泉。实车测试作为验证智能座舱功能实现、用户体验、行车安全及法规符合性的关键环节&#xff0c;能够最直接地模拟真实驾驶场景&#xff0c;确保…...

GitHub中搜索项目方法

0 Preface/Foreword 1 搜索方法 1.1 项目介绍 如上截图&#xff0c;一个项目包含的基本信息&#xff1a; 项目名项目简介项目介绍Watch数量&#xff0c;接收邮件提醒Star数量&#xff0c;关注&#xff0c;subscribeFork数量&#xff0c;在repo中创建分支 1.2 限定项目名查找…...

浅谈串口服务器的作用

串口服务器是一种网络设备&#xff0c;它允许通过TCP/IP网络远程访问串行设备。它的作用主要包括&#xff1a; 1、远程访问&#xff1a;通过将串行通信转换为以太网通信&#xff0c;串口服务器使得远程访问串行设备成为可能&#xff0c;这对于远程监控和控制非常有用。 2、数据…...

Spark 的Standalone集群环境安装与测试

目录 一、Standalone 集群环境安装 &#xff08;一&#xff09;理解 Standalone 集群架构 &#xff08;二&#xff09;Standalone 集群部署 二、打开监控界面 &#xff08;一&#xff09;master监控界面 &#xff08;二&#xff09;日志服务监控界面 三、集群的测试 &a…...

在Java中,实现数据库连接通常使用JDBC

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…...

Git 测验

Git 测验 引言 Git 是一款强大的分布式版本控制系统,它由Linus Torvalds创建,主要用于帮助多人协作开发项目。Git 的设计目标是速度、数据完整性以及分布式支持。自从2005年发布以来,Git 已经成为全球最流行的版本控制系统之一,被广泛应用于各种规模的软件开发项目中。 …...

L1G3000 提示工程(Prompt Engineering)

什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式&#xff0c;可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…...

【SQL50】day 1

目录 1.可回收且低脂的产品 2.寻找用户推荐人 3.使用唯一标识码替换员工ID 4.产品销售分析 I 5.有趣的电影 6.平均售价 7.每位教师所教授的科目种类的数量 8.平均售价 1.可回收且低脂的产品 # Write your MySQL query statement below select product_id from Products w…...

jmeter脚本-请求体设置变量and请求体太长的处理

目录 1、查询接口 1.1 准备组织列表的TXT文件&#xff0c;如下&#xff1a; 1.2 添加 CSV数据文件设置 &#xff0c;如下&#xff1a; 1.3 接口请求体设置变量&#xff0c;如下&#xff1a; 2、创建接口 2.1 见1.1 2.2 见1.2 2.3 准备创建接口的请求体TXT文件&#xff…...

基于java+SpringBoot+Vue的旅游管理系统设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…...

SD3模型的部署(本地部署)

文章目录 模型权重的下载需要注意的地方推理代码生成的效果图 模型的结构图 模型权重的下载 SD3&#xff1a;huggingface的权重 我们需要把huggingfaceface下的这些文件都下载到一个文件加下&#xff0c;然后在后面的pipe StableDiffusion3Pipeline.from_pretrained(“stabil…...

讲解DFD和ERD

DFD、ERD 1. DFD&#xff08;数据流图&#xff0c;Data Flow Diagram&#xff09;DFD的主要元素&#xff1a;DFD的层次结构&#xff1a;举例&#xff1a;1. 上下文图&#xff1a;2. 分解图&#xff1a; DFD的应用&#xff1a; 2. ERD&#xff08;实体关系图&#xff0c;Entity …...

TVM计算图分割--LayerGroup

文章目录 介绍Layergroup调研TVM中的LayergroupTVM Layergroup进一步优化MergeCompilerRegions处理菱形结构TVM中基于Pattern得到的子图TPUMLIR地平线的Layergroup介绍 Layergroup目前没找到严格、明确的定义,因为不同厂家的框架考虑的因素不同,但是基本逻辑是差不多的。一般…...

OPPO开源Diffusion多语言适配器—— MultilingualSD3-adapter 和 ChineseFLUX.1-adapter

MultilingualSD3-adapter 是为 SD3 量身定制的多语言适配器。 它源自 ECCV 2024 的一篇题为 PEA-Diffusion 的论文。ChineseFLUX.1-adapter是为Flux.1系列机型量身定制的多语言适配器&#xff0c;理论上继承了ByT5&#xff0c;可支持100多种语言&#xff0c;但在中文方面做了额…...