322. 零钱兑换

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。

示例 1:

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

输入: coins = [2], amount = 3
输出: -1
说明:
你可以认为每种硬币的数量是无限的。

class Solution {private int min = Integer.MAX_VALUE;public int coinChange(int[] coins, int amount) {Arrays.sort(coins); // ascdfs(coins, coins.length - 1, amount, 0);return min == Integer.MAX_VALUE ? -1 : min;}private void dfs(int[] coins, int ci, int rest, int cnt) {if (ci < 0) return;for (int i = rest / coins[ci]; i >= 0; i--) {int currRest = rest - i * coins[ci], currCnt = cnt + i;if (currRest > 0 && currCnt + 1 < min) dfs(coins, ci - 1, currRest, currCnt);else {if (currRest == 0 && currCnt < min) min = currCnt;break;}}}
}

Java实现 LeetCode 322 零钱兑换相关推荐

  1. leetcode: 322.零钱兑换

    322.零钱兑换 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/coin-change/ 给你一个整数数组 coins ,表示不同面额的硬币:以及一 ...

  2. LeetCode 322. 零钱兑换(DP)

    文章目录 1. 题目信息 2. 解题 2.1 回溯穷举 2.2 动态规划 1. 题目信息 给定不同面额的硬币 coins 和一个总金额 amount. 编写一个函数来计算可以凑成总金额所需的最少的硬币 ...

  3. golang力扣leetcode 322.零钱兑换

    322.零钱兑换 322.零钱兑换 题解 代码 322.零钱兑换 322.零钱兑换 题解 //state: dp[i]金额为i时所需最少硬币个数 //function: dp[i]=dp[i-n]+1 ...

  4. [LeetCode] 322.零钱兑换 五种方法讲解

    322.零钱兑换 五种方法讲解 文章目录 322.零钱兑换 五种方法讲解 1 问题描述 2 问题分析 3 解决策略 3.1 递归-暴力解决 3.2 递归-加入存储 3.3 BFS 3.4 动态规划-自 ...

  5. LeetCode 322. 零钱兑换

    322. 零钱兑换 难度 中等 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额. 计算并返回可以凑成总金额所需的 最少的硬币个数 .如果没有任何一种硬币组 ...

  6. Leetcode.322 零钱兑换

    索引iii表示 amountamountamount 金额,dp[i]dp[i]dp[i] 表示最少 coinscoinscoins 个数. 递归 class Solution {int res = ...

  7. Leetcode 322.零钱兑换

    Time: 20190906 Type: Medium 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币 ...

  8. leetcode 322. 零钱兑换 思考分析

    目录 1.题目 2.思路分析 3.参考链接 1.题目 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总 ...

  9. 99. Leetcode 322. 零钱兑换 (动态规划-完全背包)

    步骤一.确定状态: 确定dp数组及下标含义 dp数组是个amout+1的数组,dp[j]表示的是装满容量为j的背包所需要的最 少物品的个数 步骤二.推断状态方程: 对于当前物品i, 有两种选择决定了d ...

最新文章

  1. 区分Java拦截器和过滤器
  2. android连接sqlite进行简单的增删改查和事务管理
  3. iOS - Flutter混合开发
  4. mysql --The MEMORY Storage Engine--官方文档
  5. 一阶电路暂态响应的结果分析。_反激式DCDC变换器的分析、计算与仿真精讲
  6. Swift之旅--数据类型
  7. 分布式锁 基于Redis
  8. 一元运算符重载 前置和后置++ --(这种一般用成员函数来实现重载)
  9. 小白学python之整型,布尔值,十进制二进制转换和字符串详解for循环!
  10. Maven命令安装本地jar包到本地仓库
  11. 宏正ATEN推出ALTUSEN全系列IP-Based远程机房管理方案
  12. 发布阿里云OSS for phpcmsV9整合教程
  13. selenium中CSS选择器定位
  14. 常见EDA软件的license管理
  15. 基于matlab的红外图像处理算法研究,基于小波的红外图像去噪算法研究
  16. OpenJudge NOI题库 入门 116题 (二)
  17. 不规则图形数格子的方法_最强大脑第四季不规则数独规则介绍 数独技巧口诀带图解析...
  18. 中国科学技术大学计算机考研好考吗,中国科学技术大学计算机考研复习方法谈...
  19. Cisco2960交换机密码破解方法
  20. 使用xpath爬取学院新闻

热门文章

  1. Unity Shader - 故障艺术之 - Glitch Art - ImageBlock + Split RGB (区块强度 + 分离通道颜色的故障效果)
  2. 电脑空闲状态,鼠标长时间无人操作后电脑自动关机软件
  3. 在linux里面把一个在前台运行的命令转为后台运行
  4. 在平面内,已知矩形的中心点坐标、长、宽和倾斜角度,求矩形四个角点的坐标
  5. [转]PHP程序段错误分析
  6. mysqldump 每日定时备份
  7. 线性反馈移位寄存器LFSR(斐波那契LFSR(多到一型)和伽罗瓦LFSR(一到多型)|verilog代码|Testbench|仿真结果)
  8. 企业如何通过抖音矩阵号实现抖音搜索丨短视频SEO系统开发部署
  9. MasterCAM9.1里实体切削验证参数怎么设置
  10. 双系统主系统重做后另外系统找回