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

算法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

题解

class Solution:def coinChange(self, coins: List[int], amount: int) -> int:@cache# 完全背包问题# dfs(i, c) = 使用硬币种类 coins[0], coins[1], ..., coins[i]来凑出恰好金额c所需的最少硬币数量# i:当前可以考虑的硬币种类的最大索引# i = 0 表示只能使用第一种硬币 coins[0]# i = 2 表示可以使用前三种硬币 coins[0], coins[1], coins[2]# c:需要凑出的剩余目标金额def dfs(i:int,c:int)->int:# 没有硬币可用(i < 0),但金额也刚好为0,说明之前的硬币选择已经完美凑出了目标金额if i < 0:return 0 if c == 0 else inf# 不选该硬币if c < coins[i]:return dfs(i-1,c)# 不选 vs 选# 这里覆盖了没有任何一种硬币组合能组成总金额的情况,此时这里会返回infreturn min(dfs(i-1,c),dfs(i,c-coins[i])+1)ans = dfs(len(coins) - 1,amount)return ans if ans<inf else -1

复杂度分析

  • 时间复杂度:O(n⋅amount),其中 n 为 coins 的长度。
  • 空间复杂度:O(n⋅amount)。
http://www.dtcms.com/a/578767.html

相关文章:

  • 8818网站建设江门关键词优化排名
  • 网站可以个人备案吗弄美团网站的一般一个做赚多少钱
  • 自己做的网站和ie不兼容衡阳县住房和城乡建设局网站
  • 外贸推广网站建设公司装修设计
  • 免费网页设计作业素材搜索引擎优化应注意什么
  • seo站点山东省建设业协会网站
  • 化妆品网站建设描述wordpress数据爬虫
  • 如何修改网站后台密码免费软件下载平台
  • 【八股】更新
  • 数据统计网站精准客户截流软件
  • Facebook 私域运营体系构建指南:从引流到转化的系统化方法
  • 成都门户网站壹六八信息科技网站建设
  • 餐厅网站源码wordpress 阿里云虚拟主机
  • 对话式深度学习基础入门-机器学习 vs 深度学习
  • 沧州市网站企业推广方式有哪些
  • 网站开发的方法有哪些手机做直播官方网站
  • 10.29 JS学习13
  • 网站建设中英文表述手机小说网站源码
  • 建行官网网站综合网站有哪些
  • 360云盘做服务器建设网站开源软件开发平台
  • 免费的网站模版下载360指数官网
  • 没网站域名可以做备案吗免费搭网站
  • 成都百度网站排名优化系统管理下载
  • 十三、系统集成springsecurity
  • cms网站访问人数汕头企业网站建设流程
  • 微信小程序开发——第二章:微信小程序开发环境搭建
  • 一个企业网站需要多少钱公司做网站需要哪些
  • 达妙电机卖断货openarm需求强劲-背后关键技术解析
  • 网站开发能用到的ps知识网页界面设计需要首先做市场研究
  • 做网站需要下什么软件微信网页版登录手机版