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

Leetcode 322 零钱兑换

题意理解

        给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

        计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

        你可以认为每种硬币的数量是无限的。

        coins表示不同值得元素,有无限个,目标是使用元素凑出目标值最少需要多少个硬币

        这是一个完全背包问题,但不是一个纯背包问题。因为这里问的不是背包里物品的重量或价值,而是最少用多少个硬币。

解题思路

        根据题意,我们可以得到

        dp[j]表示凑出j最少使用dp[j]个硬币

        递推公式:dp[j]=min(dp[j-coins[i]],dp[j])

        从组合数和排列数来看,无论是组合数还是排列数其最少硬币数都是一样的,所以双for循环的顺序是可以颠倒的,对结果无影响。

        由于物体可以重复取用,所以对于背包的遍历选择正序遍历

1.解题

public int coinChange(int[] coins, int amount) {int[] dp=new int[amount+1];Arrays.fill(dp,Integer.MAX_VALUE);dp[0]=0;for(int i=0;i<coins.length;i++){//遍历硬币for(int j=1;j<=amount;j++){//遍历背包if(coins[i]<=j){if(Integer.compare(Integer.MAX_VALUE,dp[j-coins[i]])!=0)dp[j]= Math.min(dp[j-coins[i]]+1,dp[j]);}}}return Integer.compare(Integer.MAX_VALUE,dp[amount])==0?-1:dp[amount];}

2.分析

时间复杂度:O(n^2)

空间复杂度:O(n)

相关文章:

  • Hadoop搭建(完全分布式)
  • TI的电量计驱动在卸载时导致Linux卡死
  • C++ dfs搜索枚举(四十九)【第九篇】
  • Spark安装(Yarn模式)
  • WebAssembly002 FFmpegWasmLocalServer项目
  • 单选全选功能实现
  • k8s弃用docker后使用ctr导入镜像
  • 代码随想录算法训练营29期|day43 任务以及具体任务
  • leetcode-hot100树的专题
  • 验证码倒计时:用户界面的小细节,大智慧
  • 多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测
  • SSL协议是什么?关于SSL和TLS的常见问题解答
  • Map 集合
  • 编译原理实验1——词法分析(python实现)
  • @ResponseBody
  • [LeetCode] Wiggle Sort
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 07.Android之多媒体问题
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Electron入门介绍
  • exports和module.exports
  • Git 使用集
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java深入 - 深入理解Java集合
  • mac修复ab及siege安装
  • passportjs 源码分析
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 记一次和乔布斯合作最难忘的经历
  • 目录与文件属性:编写ls
  • 普通函数和构造函数的区别
  • 前端之Sass/Scss实战笔记
  • 浅谈Golang中select的用法
  • 如何优雅地使用 Sublime Text
  • 入手阿里云新服务器的部署NODE
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #laravel 通过手动安装依赖PHPExcel#
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (¥1011)-(一千零一拾一元整)输出
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (数据结构)顺序表的定义
  • (五)c52学习之旅-静态数码管
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET和.COM和.CN域名区别
  • .net下的富文本编辑器FCKeditor的配置方法
  • .stream().map与.stream().flatMap的使用
  • /var/log/cvslog 太大