文章目录

  • 题目描述
  • 思路 & 代码

题目描述

  • 和完全平方数基本上一样啦,但是我觉得这道题的判断 & 循环处理更恶心

思路 & 代码

  • 相对于完全平方数,这里要考虑零钱数组无序,要先进行排序
  • 与此同时,还要考虑零钱数组的值并不一定最小为1,因此 dp[i] 不能直接初始化为 i
  • 用到临时变量 min,结合对比判断 防止dp[i] 变成 MIN_VALUE(而非直接Math.min())
class Solution {/*** 感觉和平方数很像*/public int coinChange(int[] coins, int amount) {// 先排序Arrays.sort(coins);int[] dp = new int[amount + 1];for(int i = 1; i <= amount; i++){// 初始化int min = Integer.MAX_VALUE;for(int j = 0; j < coins.length && i - coins[j] >= 0; j++){// 很重要的判断if(dp[i - coins[j]] < min){min = dp[i - coins[j]] + 1;}}dp[i] = min;}if(dp[amount] == Integer.MAX_VALUE){return -1;}return dp[amount];}
}
  • 无注释版
class Solution {public int coinChange(int[] coins, int amount) {Arrays.sort(coins);int[] ans = new int[amount + 1];for(int i = 1; i <= amount; i++) {int min = Integer.MAX_VALUE;for(int j = 0; j < coins.length && i - coins[j] >= 0; j++) {if(ans[i - coins[j]] < min) {min = ans[i - coins[j]] + 1;}}ans[i] = min;}return ans[amount] == Integer.MAX_VALUE ? -1 : ans[amount];}
}

【LeetCode笔记】322. 零钱兑换(Java、动态规划)相关推荐

  1. LeetCode:322. 零钱兑换(python)

    LeetCode:322. 零钱兑换(python) 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总 ...

  2. 322. 零钱兑换 golang 动态规划

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

  3. leetcode 322. Coin Change | 322. 零钱兑换(动态规划)

    题目 https://leetcode.com/problems/coin-change/ 题解 也许是第一次在没看答案的情况下写的动态规划- 第一反应是,这题不是广义背包吗?想了一下,不是,因为广义 ...

  4. 【LeetCode】322. 零钱兑换 结题报告 (C++)

    原题地址:https://leetcode-cn.com/problems/coin-change/ 题目描述: 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成 ...

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

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

  6. 【必备算法】动态规划:LeetCode题(六)322. 零钱兑换,518. 零钱兑换 II

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

  7. Java实现 LeetCode 322 零钱兑换

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

  8. 动态规划:322. 零钱兑换(完整思路过程)

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

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

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

  10. leetcode: 322.零钱兑换

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

最新文章

  1. 神经网络到底是如何思考的?MIT精英们做了这么一个实验室来搞清楚
  2. 我用90年代的古董电脑训练CNN
  3. 在tensorflow中的网格图问题--np.mgrid()
  4. mysql 安装完成后需要做的配置
  5. flink的Table类型的变量两种输出的形式
  6. 社群系统ThinkSNS+ V2.2-V2.3升级教程
  7. idea多级目录不展开的问题
  8. 浅析android应用增量升级
  9. 天融信网闸web界面登录方式_有颜值更有才华,乘风破浪的天融信面板AP接受硬核实测...
  10. 51单片机循迹小车工作原理与程序设计思路
  11. 逆向直播盒子MT·Box-iOS客户端
  12. Linux系统安装详解
  13. 两个向量的点乘和叉乘怎么算_数学基础 —— 向量运算:点乘和叉乘
  14. MySQL 视图(详解)
  15. Unity属性(Attributes)
  16. 中国近代史-蒋廷黻-笔记-第一章-剿夷与抚夷-第二节-英国人做鸦片买卖
  17. 步步学习自定义View:Hencoder 精简版学习笔记(一)
  18. 使用C#压缩/解压缩7-zip文件
  19. 有关《家》的经典歌曲_浅谈艺术歌曲《家》的演唱
  20. JAVA第八课:集合(CollectionMap)

热门文章

  1. foreach 循环达到条件的第一次就停止_是否应该停止在JavaScript代码中使用forEach()?...
  2. 咸阳高考成绩查询2021,2021咸阳市地区高考成绩排名查询,咸阳市高考各高中成绩喜报榜单...
  3. Fast R-CNN整体把握
  4. 图像配准之特征点匹配的思考
  5. Cheat Engine 教程( 1 - 9 通关 )
  6. nohup 与 linux 程序后台执行
  7. linux的grub损坏,如何利用Grub命令启动损坏的Linux系统?
  8. linux 串口读取陀螺仪,stm32读取陀螺仪MPU6050发送数据到串口
  9. C语言的数组基础,C语言基础-数组
  10. GCD简介一:基本概念和Dispatch Queue