零钱兑换Python解法
给你一个整数数组 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解法相关推荐
- 【算法题目】DFS BFS 动态规划 零钱兑换 Python
322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额.计算并返回可以凑成总金额所需的 最少的硬币个数 .如果没有任何一种硬币组合能组成总金额 ...
- python换零钱_322.零钱兑换-python
动态规划问题,稍后更新思路 class Solution(object): def coinChange(self, coins, amount): """ :type ...
- python解决换零钱问题_多种解法解决“零钱兑换”问题
最近在LeetCode上刷算法题,准备秋招.刷了一些题之后,发现有些题非常棒,能够将多种知识点结合在一起.本文就以"零钱兑换"问题为例,展示同一道题的多种不同解法. 零钱兑换问题 ...
- 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题
动态规划(Dynamic Programming)思路和Python解题示例 动态规划是一种主要用来优化朴素递归的方法,每当输入不同值调用递归函数出现大量重复的(子)输入和调用(返回结果)时,就可以考 ...
- LeetCode:322. 零钱兑换(python)
LeetCode:322. 零钱兑换(python) 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总 ...
- python换零钱_python动态规划-零钱兑换
零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数. 如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: c ...
- 【leetcode题解——动态规划之完全背包】518.零钱兑换II(python版本详解+表格+dp五部曲)
518. 零钱兑换 II 重点: 本题求组合数,而非排列数. 例如示例: 5 = 2 + 2 + 1 5 = 2 + 1 + 2 这是一种组合,都是 2 2 1,而(2,2,1)(2,1,2)为两种排 ...
- python整钱兑换零钱_LeetCode 零钱兑换
零钱兑换 题目 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: ...
- c++ 多重背包状态转移方程_背包问题之零钱兑换
读完本文,你可以去力扣拿下如下题目: 518.零钱兑换II ----------- 零钱兑换 2 是另一种典型背包问题的变体,我们前文已经讲了 经典动态规划:0-1 背包问题 和 背包问题变体:相等子 ...
最新文章
- ssh远程执行多个命令
- 程序员食品营养(1)-面包基础
- 数据结构和算法 —— 图
- zuulfilter添加例外_SpringCloud之Zuul 自定义filter
- flink中的java匿名函数修改为实名函数
- 喂,搞那么难的算法面试题有必要么?
- 【keras/Tensorflow/pytorch】Conv2D和Conv2DTranspose详解
- 服务器改文件,服务人员:如何更新服务器上的文件更改缓存?
- 米尔MYD-JX8MPQ yocto 编译流程 (记录)
- 沪牌软件操作开发说明
- 在houdini里,怎么手动设置输出物体的红绿蓝通道,便于nuke调节使用(基础篇)
- ESB 企业服务总线基本内容概述
- 《麦肯锡方法》第6章 层级管理-思维导图
- 详解 - RS232、RS422、RS485 联系与区别
- JavaScript 红宝书第4版上市啦!「文末送几本给大家」
- Java日志——Logback的使用及原理
- 都能学会的阿里云服务器操作指南
- C++ openssl ECDSA签名
- PostgreSQL clog详解
- linux上不了网是因为千兆网卡,求救 千兆网卡不能工作在千兆只能百兆 排除网线问题...
热门文章
- datawhale组队学习笔记(2)链表
- SAP 电商云 Accelerator 和 Spartacus UI 的工作机制差异
- jMeter 打开项目时遇到错误消息 CannotResolveClassException: com.blazemeter.jmeter.RandomCSVDataSetConfig
- SAP Spartacus PageMetaResolver 的单元测试
- 回答一位朋友关于 SAP SRM 行业 转 CRM 行业的咨询
- SAP Spartacus B2B 页面 Disable 按钮的显示原理
- Angular应用只执行指定单元测试的小技巧
- SAP Fiori里Contact Support的按钮渲染逻辑
- 使用nodejs应用查询SAP HANA Express Edition里的数据
- SAP CRM呼叫中心polling and C4C notification polling