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

算法通关村第十九关——最少硬币数

LeetCode322.给你一个整数数组 coins,表示不同面额的硬币,以及一个整数 amount,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。

示例1:
输入:coins=[1,2,5],amount = 11
输出:3
解释:11 = 5 + 5 + 1

示例2:
输入:coins=[2,5,7],amount=27
输出:3
解释:21 = 7 + 7 + 7

public int coinChange(int[] coins, int amount) {int max = amount + 1;int[] dp = new int[amount + 1];Arrays.fill(dp, max);dp[0] = 0;for (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[0] + 1);}}}return dp[amount] > amount ? -1 : dp[amount];
}

当金额为0时,我们默认需要0个硬币来组成该金额。

在这里的两层 for 循环中,要把1到 amount 的每一个数都遍历,在第二层循环中,遍历已知硬币,如果当前遍历的硬币小于等于 i 的话,就说明可以用这个硬币,那么就让当前的 dp 等于dp[i]和 dp[0] + 1中的一个。

在dp数组当中,每一个值都是通过前面的值推导出来的。

http://www.lryc.cn/news/161479.html

相关文章:

  • Linux ifconfig只显示 lo 网卡,没有ens网卡解决方案
  • Java复习-26-枚举
  • NLP(六十八)使用Optimum进行模型量化
  • Tomcat多实例和负载均衡动静分离
  • 企业ERP和泛微OA集成场景分析
  • 31 WEB漏洞-文件操作之文件包含漏洞全解
  • qmake.exe xxx.pro -spec win32-g++ 作用
  • SpringMVC实现增删改查
  • React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
  • Android 在TextView前面添加多个任意View且不影响换行
  • 字符串相加
  • uni-app直播从0到1实战
  • Python UI自动化 —— pytest常用运行参数解析、pytest执行顺序解析
  • LeetCode刷题笔记【25】:贪心算法专题-3(K次取反后最大化的数组和、加油站、分发糖果)
  • java基础面试题 第四天
  • postgresql-常用日期函数
  • 【业务场景】用户连点
  • zabbix企业微信告警
  • (高频面试1)Redis缓存穿透、缓存击穿、缓存雪崩
  • c++推箱子小游戏
  • SpringMVC:从入门到精通
  • jmeter 数据库连接配置 JDBC Connection Configuration
  • TVC广告片制作成本多少
  • 【Express.js】代码规范
  • Vue2+Vue3基础入门到实战项目(前接六 副线一)—— 面经 项目
  • QT tcpserver
  • Android adb shell svc 知识详解
  • Debian12系统下LAMP环境中Nubuilder4.5的安装
  • 百度超级链BaaS服务平台调研
  • 计算机网络之TCP/IP协议第二篇:OSI参考模型详解