当前位置: 首页 > 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.lryc.cn/news/482288.html

相关文章:

  • GitHub 上的开源项目推荐
  • 实现Reactor反应堆模型:框架搭建
  • UE5 样条线组件(未完待续)
  • 计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
  • sql速度优化多条合并为一条语句
  • 用 PHP或Python加密字符串,用iOS解密
  • docker容器启动报错error creating overlay mount to /var/lib/docker/overlay2解决办法
  • 人工智能在智能家居中的应用
  • MySQL数据库备份与恢复:全面深入指南
  • 前端请求后端php接口跨域 cors问题
  • 【软件工程】ATAM架构权衡评估方法
  • MFC 重写了listControl类(类名为A),并把双击事件的处理函数定义在A中,主窗口如何接收表格是否被双击
  • c和cpp的异常处理
  • monkey-安卓稳定性测试
  • 【贪心算法】贪心算法三
  • LeetCode 40-组合总数Ⅱ
  • STM32WB55RG开发(1)----开发板测试
  • 误删分区数据恢复全攻略
  • 《XGBoost算法的原理推导》12-14决策树复杂度的正则化项 公式解析
  • 昇思大模型平台打卡体验活动:项目4基于MindSpore实现Roberta模型Prompt Tuning
  • hadoop 3.x 伪分布式搭建
  • springboot 整合mybatis
  • 餐饮门店收银系统源码、php收银系统源码
  • canal1.1.7使用canal-adapter进行mysql同步数据
  • 揭秘文心一言,智能助手新体验
  • 良心无广,这5款才是你电脑上该装的神仙软件,很多人都不知道
  • Scala图书馆创建图书信息
  • 【Python】深入理解Python中的单例模式:用元类、装饰器和模块实现高效的单例设计
  • Flutter 小技巧之 Shader 实现酷炫的粒子动画
  • 【LeetCode】【算法】42. 接雨水