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

js.零钱兑换

链接:322. 零钱兑换 - 力扣(LeetCode)

题目:

给你一个整数数组 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 <= 12
  • 1 <= coins[i] <= 231 - 1
  • 0 <= amount <= 104

思路:

我使用的是广搜的方式,使用栈结构,这样其实是比较慢的,但是还是做出来了。

代码:

/*** @param {number[]} coins* @param {number} amount* @return {number}*/var coinChange = function(coins, amount) {if(amount == 0) return 0let num = [...coins] , set = new Set([...num]) , count = 1while(num.length!=0){let n = num.lengthfor(let i = 0 ; i < n ; i++ ){// 用count代表层数if(num[0]==amount) return count//将num[0]与coins中每个数相加,将不重复的入栈coins.forEach(function(value, index, array){let item = value + num[0]//用set解决去重问题//一定要加上item<=amount条件,不然会变成死循环if(!set.has(item)&&item<=amount){set.add(item)num.push(item)}})// 将第一个元素移除num.shift()}count++}return -1};


http://www.mrgr.cn/news/70724.html

相关文章:

  • ONVIF协议操作摄像头方法
  • Bug Fix 20241122:缺少lib文件错误
  • Springboot集成ElasticSearch实现minio文件内容全文检索
  • 第十六届蓝桥杯模拟赛(第一期)-c++/c
  • 键盘上打出反引号符号(´),即单个上标的撇号(这个符号与反引号 ` 不同,反引号通常位于键盘的左上角)
  • CSP2024-J 题解
  • python:用 sklearn 转换器处理数据
  • 【C++ 篇】类之华章:超越固有模式,品味面向对象的璀璨光芒
  • OSG开发笔记(三十一):OSG中LOD层次细节模型介绍和使用
  • MySQL数据库的备份与还原
  • 大模型论文精华—20241111
  • 贪心算法day05(k次取反后最大数组和 田径赛马)
  • 3.keeplived配置文件
  • VideoChat:开源的数字人实时对话系统,支持自定义数字人的形象和音色
  • 二维差分矩阵 模板题
  • 李佳琦回到巅峰背后,双11成直播电商分水岭
  • 链式结构二叉树
  • 【QT常用技术讲解】任务栏图标+socket网络服务+开机自启动
  • 项目管理平台盘点:2024推荐的9款优质工具
  • jmeter基础05_第1个http请求
  • 【论文速看】DL最新进展202411011-图像超分、Transformer
  • 分布式----Ceph部署(上)
  • 软件测试中的PIE模型
  • 11个简单易用的电商购物车设计案例
  • 算法每日双题精讲——滑动窗口(长度最小的子数组,无重复字符的最长子串)
  • 探索 Java 中的线程池自定义技巧:高效、灵活地管理并发任务!