题目:

给你一个整数数组 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

因为硬币可以重复选择,可以当做一个完全背包的问题进行理解,
即: amount为背包容量,硬币为商品。

套用完全背包模板:

 for(int i = 0 ; i < coins.length ; i++)//遍历物品{for(int j = coins[i]; j <= amount ;j++)//遍历背包,完全背包正向遍历{进行选择}}

因为是求最小值问题,所以数组开始时候需要给一个较大的值。

class Solution {public int coinChange(int[] coins, int amount) {int[] dp = new int[amount + 1];for(int i= 0 ;  i <= amount ; i++){dp[i] = 99999;}dp[0] = 0;for(int i = 0 ; i < coins.length ; i++){for(int j = coins[i]; j <= amount ;j++){dp[j] = Math.min(dp[j] , dp[j - coins[i]] + 1);}}return dp[amount] == 99999 ? -1: dp[amount];}
}

零钱兑换(完全背包)相关推荐

  1. LeetCode 322. 零钱兑换 完全背包

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

  2. Day 44 | 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

    完全背包理论基础 完全背包与01背包的区别在于:完全背包同一物品可装多次,而01背包每个物品只能装一次. 因此遍历容量时,从前向后遍历即可! 关于遍历顺序,也与01背包有差别,01背包一维数组只能先遍 ...

  3. c++ 多重背包状态转移方程_背包问题之零钱兑换

    读完本文,你可以去力扣拿下如下题目: 518.零钱兑换II ----------- 零钱兑换 2 是另一种典型背包问题的变体,我们前文已经讲了 经典动态规划:0-1 背包问题 和 背包问题变体:相等子 ...

  4. 【恋上数据结构】贪心(最优装载、零钱兑换、0-1背包)、分治(最大连续子序列和、大数乘法)

    贪心.分治 贪心(Greedy) 问题1:最优装载(加勒比海盗) 问题2:零钱兑换 零钱兑换的另一个例子 贪心注意点 问题3:0-1背包 0-1 背包 - 实例 一些习题 分治(Divide And ...

  5. 代码随想录44——动态规划:完全背包理论基础、518零钱兑换II、377组合总和IV

    文章目录 1.完全背包理论基础 2.518零钱兑换II 2.1.题目 2.2.解答 3.377组合总和IV 3.1.题目 3.2.解答 4.组合和排列问题的便利顺序 4.1.组合问题 4.2.排列问题 ...

  6. 算法训练Day44 动态规划专题- 背包问题 | 完全背包基础知识;LeetCode518. 零钱兑换(装满背包有多少种方法,组合数);377.组合总和IV(装满背包有多少种方法,排列数)

    前言: 算法训练系列是做<代码随想录>一刷,个人的学习笔记和详细的解题思路,总共会有60篇博客来记录,计划用60天的时间刷完.  内容包括了面试常见的10类题目,分别是:数组,链表,哈希表 ...

  7. 【leetcode题解——动态规划之完全背包】518.零钱兑换II(python版本详解+表格+dp五部曲)

    518. 零钱兑换 II 重点: 本题求组合数,而非排列数. 例如示例: 5 = 2 + 2 + 1 5 = 2 + 1 + 2 这是一种组合,都是 2 2 1,而(2,2,1)(2,1,2)为两种排 ...

  8. LeetCode刷题复盘笔记—一文搞懂完全背包之322. 零钱兑换问题(动态规划系列第十四篇)

    今日主要总结一下动态规划完全背包的一道题目,322. 零钱兑换 题目:322. 零钱兑换 Leetcode题目地址 题目描述: 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amo ...

  9. 零钱兑换 [dfs -> 背包]

    零钱兑换 前言 一.零钱兑换 二.dfs & 背包 1.dfs+剪枝暴力搜索 2.空间换时间--背包 总结 参考文献 前言 零钱兑换是一个很经典的问题,可dfs进行暴力寻找,结合一些剪枝,一般 ...

最新文章

  1. Spring学习五(JDBC支持)
  2. spring batch_Spring Batch作为Wildfly模块
  3. 创建一个守护进程来监听服务进程的异常状态_用 C# 来守护 Python 进程
  4. Python 函数定义
  5. layoutSubview调用条件
  6. 面试官:有没有比读写锁更快的锁?
  7. JavaScript原型、函数伪装(apply,call)、继承
  8. python生成器详解
  9. SSIS数据转换器及字符转换器使用
  10. 导线水平角及边长观测实习记录
  11. 计算机显示用户不存在,电脑出现未知设备提示驱动安装类无效或不存在如何解决...
  12. c语言8bit转10bit,Win10系统如何才能将8bit(位深度)设定变成10bit呢?
  13. 阿里开发规约之编程规约(4)
  14. Compose基础-SideEffect(二)
  15. C++ 学习笔记(22) Builder Pattern
  16. 新一代 IT 服务管理平台 DOSM,助力企业数字化转型
  17. (4)小程序 - 家庭收支系统
  18. 【Zigbee精华教程01】Zigbee无线组网技术入门建议与学习路线
  19. 相干信号与非相干信号
  20. 超像素论文(三)——AINet: Association Implantation for Superpixel Segmentation

热门文章

  1. coco2d-html5制作弹弓射鸟第一部分---橡皮筋
  2. 9. 【gRPC系列学习】连接失败处理:backoff协议
  3. 办公台式计算机配置费用,原来这才是办公台式机需要的性能?
  4. 锁定计算机是什么意思6,文件处于锁定状态是什么意思?
  5. 如何查询中文期刊影响因子
  6. JAVA图形小动画之简单行星运动
  7. 一文读懂APS系统的核心算法和数学理论
  8. 目标检测YOLO实战应用案例100讲-基于多尺度特征融合的水下小目标检测方法研究
  9. Flutter问题记录 - Unable to find bundled Java version
  10. 何钦铭c语言第三版第3章答案,何钦铭版C语言第3章答案.pdf