可视化图解算法77:零钱兑换(兑换零钱)

1.题目

描述

给定数组coinscoins中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个amount,代表要找的钱数,求组成amount的最少货币数。

如果无解,请返回-1.

数据范围:数组大小满足 0 ≤n≤10000 , 数组中每个数字都满足 0 <<val≤10000,0≤amount≤5000

要求:时间复杂度O(n×amount) ,空间复杂度 O(amount)。

示例 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. 题解思路

先明确变量i、dp[i]的含义,根据题目的要求,确定递推公式,之后依据递推公式写出相应的代码。具体内容如下:

如果文字描述的不太清楚,你可以参考视频的详细讲解。

  • Python编码:https://www.bilibili.com/cheese/play/ep1375307https://www.bilibili.com/cheese/play/ep1375307

  • Java编码:https://www.bilibili.com/cheese/play/ep1368533https://www.bilibili.com/cheese/play/ep1368533

  • Golang编码:https://www.bilibili.com/cheese/play/ep1368733https://www.bilibili.com/cheese/play/ep1368733

3.编码实现

核心代码如下:

func coinChange(coins []int, amount int) int { //小于1的都返回0 if amount < 1 { return 0 } //1.定义状态. i:币值; dp[i]:币值为i的最少货币数; dp[i]表示凑齐i元最少需要多少货币数 dp := make([]int, amount+1) //2.初始化边界条件:dp[0]=0 币值为0,需要最少的货币数为0; dp[i]=amount+1,设定最少的货币数不存在(无解) dp[0] = 0 for i := 1; i < len(dp); i++ { dp[i] = amount + 1 //初始化为无解值 } //3.确定递推公式: //3.1 遍历1-amount元 for i := 1; i <= amount; i++ { //3.2 对于每一个目标值,每种面值的货币都要枚举 for j := 0; j < len(coins); j++ { //从给定的币种遍历最合适的 //只有面值不超过要凑的钱才能用 if coins[j] <= i { //维护最小值 cost := coins[j] dp[i] = min(dp[i], dp[i-cost]+1) //dp[i-cost]+1:上一次满足条件dp的基础之上加1张 } } } //4.输出结果: 如果最终答案为maxInt代表无解 if dp[amount] == amount+1 { return -1 } return dp[amount] } func min(a int, b int) int { if a > b { return b } return a }

具体完整代码你可以参考下面视频的详细讲解。

  • Python编码:https://www.bilibili.com/cheese/play/ep1375307https://www.bilibili.com/cheese/play/ep1375307

  • Java编码:https://www.bilibili.com/cheese/play/ep1368533

  • Golang编码:https://www.bilibili.com/cheese/play/ep1368733

4.总结

对于动态规划,求解当前目标的状态dp[i],则依赖于前期的状态(dp[i-1]或者dp[i-1])。对于目标值amount,则依赖于amount之前的值,因此需要遍历遍历1 - amount元之间的所有值。

《数据结构与算法》深度精讲课程正式上线啦!7 大核心算法模块全解析:

✅ 链表

✅ 二叉树

✅ 二分查找、排序

✅ 堆、栈、队列

✅ 回溯算法

✅ 哈希算法

✅ 动态规划

无论你是备战笔试面试、提升代码效率,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

  • Python编码实现:https://www.bilibili.com/cheese/play/ss897667807https://www.bilibili.com/cheese/play/ss897667807

  • Java编码实现:https://www.bilibili.com/cheese/play/ss161443488https://www.bilibili.com/cheese/play/ss161443488

  • Golang编码实现:https://www.bilibili.com/cheese/play/ss63997https://www.bilibili.com/cheese/play/ss63997

对于LeetCode数据结构与算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:旧时王谢堂前燕,飞入寻常百姓家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1132109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【毕业设计】SpringBoot+Vue+MySQL ONLY在线商城系统平台源码+数据库+论文+部署文档

&#x1f4a1;实话实说&#xff1a;用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否&#xff0c;咱们都是朋友&#xff0c;能帮的地方我绝不含糊。买卖不成仁义在&#xff0c;这就是我的做人原则。摘要 随着互联网技术的快速发展和电子商务的普及&#…

零代码搭建大模型知识库,5分钟搞定RAG应用,小白也能轻松上手

本文详细介绍如何使用Dify平台零代码搭建大模型知识库&#xff0c;无需编程经验即可实现RAG应用。通过创建Chatflow应用、配置大模型节点、设置知识检索节点和回答问题节点&#xff0c;读者可快速构建一个可用的大模型知识库&#xff0c;深入了解RAG工作流程&#xff0c;提升工…

前后端分离墙绘产品展示交易平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

&#x1f4a1;实话实说&#xff1a;用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否&#xff0c;咱们都是朋友&#xff0c;能帮的地方我绝不含糊。买卖不成仁义在&#xff0c;这就是我的做人原则。摘要 随着数字化时代的快速发展&#xff0c;艺术与科技…

从封闭到通用:RLVR到RLPR的LLM推理强化技术全解析

本文深入解析了强化学习在LLM推理进化中的应用&#xff0c;从依赖外部验证器的RLVR范式&#xff0c;演进到利用模型内在概率的RLPR新方法。重点介绍了1-shot RLVR的高数据效率和RLPR在通用领域的突破&#xff0c;结合verl框架详解工程实现。揭示了GRPO算法的核心作用和熵正则项…

AI Coding时代,程序员的7项核心竞争力,不看可能会被淘汰(建议收藏)

文章探讨了AI编程时代程序员的核心竞争力。尽管AI能帮助编写代码&#xff0c;但程序员的基本功、需求理解、编码规范、协作能力、技术深度和广度、安全生产意识等仍无可替代。在AI时代&#xff0c;程序员应专注于提升自身不可替代的能力&#xff0c;将AI作为提高效率的工具&…

企业级网上租赁系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

&#x1f4a1;实话实说&#xff1a;用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否&#xff0c;咱们都是朋友&#xff0c;能帮的地方我绝不含糊。买卖不成仁义在&#xff0c;这就是我的做人原则。摘要 随着互联网技术的快速发展和共享经济的兴起&#…

从九尾狐AI企业培训案例解析智能矩阵获客的技术架构与实现路径

第一章&#xff1a;智能矩阵获客系统的技术底层逻辑当前企业AI获客解决方案普遍存在两大痛点&#xff1a;一是技术门槛高需专门团队维护&#xff0c;二是内容生产与分发效率低下。九尾狐AI提出的"数字人全域矩阵"架构&#xff0c;本质上是通过三层技术实现低成本自动…

大模型产业链四大层次解析:从算力芯片到行业应用的全面指南

本文解析了大模型产业四大层次架构及核心挑战&#xff1a;基础设施层算力不足&#xff0c;模型层技术代差&#xff0c;中间层标准不统一&#xff0c;应用层人才短缺。提出从产业、科学、工程三维度突破&#xff0c;构建人机协同机制与可信数据平台。核心观点认为超级智能不可避…

xampp-linux-1.8.1.tar.gz 怎么安装?Linux下XAMPP离线安装完整步骤

​一 先准备东西​ 安装包&#xff1a;xampp-linux-1.8.1.tar.gz下载链接&#xff1a;https://pan.quark.cn/s/deec067a4ccf&#xff08;提前下载好&#xff0c;放 /tmp或 /opt目录都行&#xff09;。 权限&#xff1a;用 root​ 或 sudo​ 操作&#xff08;不然解压、启动会报…

【教你用ArcPy批量输出图片并生成Mxd(零门槛小白版)】

如何快速批量出图是GISer需要解决的问题&#xff0c;要实现逐栅格图层或矢量图斑的出图则是师妹最近期末作业遇到的难题。还好&#xff0c;Gemini回归&#xff0c;通过不断调试解决这个需求。希望能转发给更多的伙伴&#xff01;难点1通过现有的Mxd工作空间能够实现逐栅格图层或…

数智孪生,金流·物流全透视:构建某银行制造业贷后风控新范式—— 基于领码 SPARK 融合平台的技术解决方案

摘要 本报告旨在为某银行&#xff08;指贵州银行、渤海银行等合作银行&#xff09;设计一套针对制造企业的贷前、贷后一体化风控管理系统。传统信贷风控高度依赖静态财报和抵押物&#xff0c;信息不对称问题显著&#xff0c;风险识别滞后。本方案以“领码 SPARK 融合平台”为数…

四川西昌电器门店:30年本地老店,5大优势让你买电器不踩坑!

【四川西昌京东家电】哪家好&#xff1a;专业深度测评开篇&#xff1a;定下基调随着西昌市民对家电品质与服务需求的提升&#xff0c;选择一家靠谱的家电门店成为关键。本次测评聚焦四川西昌家电市场&#xff0c;旨在通过客观数据与真实体验&#xff0c;为消费者提供权威选购参…

springboot事务触发滚动与不滚蛋

事务触发滚动与不滚蛋代码&#xff1a;MyBatisConfig 类package org.example.testproduct;import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.context.annota…

​ ⛳️赠与读者[特殊字符]1 概述基于城市场景下无人机三维路径规划的导航变量的多目标粒子群优化算法(NMOPSO)研究摘要随着无人机应用场景的复杂化,城市场景下的三维路径规划需同时优化

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Python 内置函数:那些你见过但未必真正了解的“老朋友“

一、bin()&#xff1a;数字的"二进制身份证" 基本用法&#xff1a; # 将整数转换为二进制字符串 print(bin(10)) # 0b1010 print(bin(255)) # 0b11111111实际应用场景&#xff1a; # 1. 权限系统&#xff1a;用二进制位表示权限 READ_PERMISSION 0b001 # 1 WRIT…

鸿蒙PC上Qt原生应用开发:从零搭建开发环境到部署实战,附HarmonyOS SDK配置与避坑指南(C++实现)

鸿蒙PC上Qt原生应用开发&#xff1a;从零搭建开发环境到部署实战&#xff0c;附HarmonyOS SDK配置与避坑指南&#xff08;C实现&#xff09;摘要&#xff1a;本文记录了我在鸿蒙PC平台上开发Qt原生应用的完整实战过程。通过两周的深度适配&#xff0c;成功将Qt6.7应用迁移到Ope…

鸿蒙PC Qt开发环境配置全攻略:从零搭建到第一个原生应用实战

鸿蒙PC Qt开发环境配置全攻略&#xff1a;从零搭建到第一个原生应用实战摘要&#xff1a;本文详细记录在鸿蒙PC环境下搭建Qt开发环境的完整过程&#xff0c;从开发机选择到环境配置&#xff0c;再到首个原生应用的开发与部署实战。内容涵盖鸿蒙PC特性解析、Qt框架适配要点、分布…

基于Java+SpringBoot+SSM合同信息管理系统(源码+LW+调试文档+讲解等)/合同管理信息系统/合同信息管理平台/合同管理系统/信息管理系统/合同管理软件/合同资料管理系统

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

鸿蒙PC开发指南:从零配置Qt环境到实战部署完整流程

鸿蒙PC开发指南&#xff1a;从零配置Qt环境到实战部署完整流程摘要&#xff1a;本文将以第一人称视角记录在开源鸿蒙PC平台上从零搭建Qt开发环境到实战部署的全过程。你将获得&#xff1a;鸿蒙PC开发环境配置的保姆级教程、Qt应用迁移的核心适配方案、解决跨平台兼容性问题的实…

鸿蒙PC版Electron开发指南:手把手教你搭建环境并打包跨端应用

鸿蒙PC版Electron开发指南&#xff1a;手把手教你搭建环境并打包跨端应用 摘要&#xff1a;本文为开发者提供鸿蒙PC平台上的Electron应用开发完整解决方案。通过实战案例&#xff0c;你将掌握Electron应用在OpenHarmony PC环境的适配要点、环境搭建全流程、API兼容性处理技巧&a…