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

LeetCode 322. 零钱兑换

 题目描述  

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

解法

动态规划

解题思路

         以用例一作为例子模拟一下dp数组不断“完善”的过程,当只是要coins[0]作为兑换硬币时,得到数组dp1,再加入coins[1]和coins[2]后有分别得到dp2、dp[3]。在每轮遍历coins[j]的过程中,如果i > coins[j]就进行dp[i] = min(dp[i],dp[i - coins[j]] + 1)操作,不断迭代dp,最后得到最终数组dp,就是兑换硬币问题的答案。

class Solution {
public:int coinChange(vector<int>& coins, int amount) {vector <float> dp(amount + 1,INT_MAX); //此处使用float类型,方便赋无穷大值dp[0] = 0;for(int i = 0;i <= amount;i ++){for(int j = 0;j < coins.size();j ++){if(i >= coins[j]){dp[i] = min(dp[i],dp[i - coins[j]] + 1);}}}return dp[amount] == INT_MAX ? -1 : dp[amount];}
};

        时间复杂度O(N^2),空间复杂度O(N)

http://www.dtcms.com/a/569943.html

相关文章:

  • Redis黑马点评 Feed流
  • 域名后缀cn做网站河北手机网站建设
  • U-Net保姆级教程:从原理到医学细胞分割实战(PyTorch版)!
  • mini-bitcask学习笔记
  • 东莞网站建设公司哪家好电商平面设计主要做什么
  • 解决远程调用微服务之后无法通过上下文获取用户id问题
  • 网站代付系统怎么做大型网站seo策略
  • 国家住房城乡建设部网站住房和城乡建设部网站北京
  • 制作网站的程序网站查找工具
  • 网站建设 图片压缩网站开发多少费用
  • React Native App 自动检测版本更新完整实现指南
  • 网站建站是 什么企业网站托管运营
  • 字母象形的力量:单词速记之多种意象融合一体
  • xtuoj Binary
  • 南沙网站开发企业网站建设需要多少钱知乎
  • python 包 检测自己是否为 editable 模式安装的
  • ToB销售获客策略全解析:实现精准客户开发方法论
  • 成都医院手机网站建设湖北做网站找谁
  • 网站需求分析怎么写设计网站大全湖南岚鸿设计
  • css 画一个圆角渐变色边框
  • 网站路径问题国外h5建站
  • 数字营销技术应用网站大连网页搜索排名提升
  • 简化Java开发——Hutool工具使用案例
  • 某次钓鱼邮件安全事件应急
  • TCP/IP 五层协议栈
  • Linex操作系统-Shell脚本(七)
  • Linux系统编程——守护进程
  • 【打靶日记】VulNyx 之 Fing
  • 个人简历模板电子版可填写郑州专业seo哪家好
  • 开发与测试的微妙平衡:从“对立”到“合作”的实战经验