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

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/coin-change

例:

输入:coins = [1, 2, 5], amount =11输出:3解释:11 = 5 + 5 + 1

# 解析:动态规划,从总金额1开始遍历,若当前金额大于数组中正在判断的金额,那么减去硬币的值得到的值可以在前面的金额中找到,若找不到即为-1,找到了则加上这枚硬币即可(硬币数目加一),每个硬币都判断完后,符合要求的情况再求出硬币最少的情况。

class Solution(object):def coinChange(self, coins, amount):""":type coins: List[int]:type amount: int:rtype: int"""res = [0 for i in range(amount + 1)]  # 初始化为0,因为下标的原因多一位for i in range(1, amount+1):  # 对目标金额以及小于它的所有金额进行遍历cost = float('inf')  # 消耗数目初始化为无穷大,因为要找最小值for c in coins:  # 对数组中的硬币进行判断if i - c >= 0:  # 如果当前值大于硬币值,那么减去可获得之前的金额数cost = min(cost, res[i - c] + 1)  # 在之前的金额数上加一然后与之前的消耗数目比较,选出数目最小的那种情况res[i] = cost  # 然后将最少的情况放入dp数组if res[amount] == float('inf'):  # 判断,如果dp数组的目标金额存放位置为无穷大(inf)说明没有可以实现的情况return -1  # 返回-1else:return res[amount]  # 存在直接返回数值即可

零钱兑换Python解法相关推荐

  1. 【算法题目】DFS BFS 动态规划 零钱兑换 Python

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

  2. python换零钱_322.零钱兑换-python

    动态规划问题,稍后更新思路 class Solution(object): def coinChange(self, coins, amount): """ :type ...

  3. python解决换零钱问题_多种解法解决“零钱兑换”问题

    最近在LeetCode上刷算法题,准备秋招.刷了一些题之后,发现有些题非常棒,能够将多种知识点结合在一起.本文就以"零钱兑换"问题为例,展示同一道题的多种不同解法. 零钱兑换问题 ...

  4. 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题

    动态规划(Dynamic Programming)思路和Python解题示例 动态规划是一种主要用来优化朴素递归的方法,每当输入不同值调用递归函数出现大量重复的(子)输入和调用(返回结果)时,就可以考 ...

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

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

  6. python换零钱_python动态规划-零钱兑换

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

  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. python整钱兑换零钱_LeetCode 零钱兑换

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

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

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

最新文章

  1. ssh远程执行多个命令
  2. 程序员食品营养(1)-面包基础
  3. 数据结构和算法 —— 图
  4. zuulfilter添加例外_SpringCloud之Zuul 自定义filter
  5. flink中的java匿名函数修改为实名函数
  6. 喂,搞那么难的算法面试题有必要么?
  7. 【keras/Tensorflow/pytorch】Conv2D和Conv2DTranspose详解
  8. 服务器改文件,服务人员:如何更新服务器上的文件更改缓存?
  9. 米尔MYD-JX8MPQ yocto 编译流程 (记录)
  10. 沪牌软件操作开发说明
  11. 在houdini里,怎么手动设置输出物体的红绿蓝通道,便于nuke调节使用(基础篇)
  12. ESB 企业服务总线基本内容概述
  13. 《麦肯锡方法》第6章 层级管理-思维导图
  14. 详解 - RS232、RS422、RS485 联系与区别
  15. JavaScript 红宝书第4版上市啦!「文末送几本给大家」
  16. Java日志——Logback的使用及原理
  17. 都能学会的阿里云服务器操作指南
  18. C++ openssl ECDSA签名
  19. PostgreSQL clog详解
  20. linux上不了网是因为千兆网卡,求救 千兆网卡不能工作在千兆只能百兆 排除网线问题...

热门文章

  1. datawhale组队学习笔记(2)链表
  2. SAP 电商云 Accelerator 和 Spartacus UI 的工作机制差异
  3. jMeter 打开项目时遇到错误消息 CannotResolveClassException: com.blazemeter.jmeter.RandomCSVDataSetConfig
  4. SAP Spartacus PageMetaResolver 的单元测试
  5. 回答一位朋友关于 SAP SRM 行业 转 CRM 行业的咨询
  6. SAP Spartacus B2B 页面 Disable 按钮的显示原理
  7. Angular应用只执行指定单元测试的小技巧
  8. SAP Fiori里Contact Support的按钮渲染逻辑
  9. 使用nodejs应用查询SAP HANA Express Edition里的数据
  10. SAP CRM呼叫中心polling and C4C notification polling