首页 > 其他分享 >322. 零钱兑换(中)

322. 零钱兑换(中)

时间:2024-01-17 20:36:18浏览次数:26  
标签:return int res coins 322 零钱 amount 兑换 dp

目录

题目

  • 给你一个整数数组 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:
        def dp(n):
            #base case
            if n==0:return 0
            if n <0:return -1
            #求最小值,所以初始化为正无穷
            res = float('INF')
            for coin in coins:
                subproblem=dp(n-coin)
                #子问题无解,跳过
                if subproblem ==-1:continue
                res = min(res,1+subproblem)#subproblem 的值加上 1(表示选择了当前硬币)得到当前情况下的硬币数量,并将其与 res 比较,更新 res 为较小的值。
            return res if res!=float('INF') else -1
        return dp(amount)

法二、带备忘录的动态规划

class Solution:
    def coinChange(self, coins: List[int], amount: int) -> int:
        memo = []  # 备忘录

        def dp(n):
            if n in memo:  # 如果已经计算过,直接返回结果
                return memo[n]
            if n == 0:
                return 0
            if n < 0:
                return -1

            res = float('inf')
            for coin in coins:
                subproblem = dp(n - coin)
                if subproblem == -1:
                    continue
                res = min(res, 1 + subproblem)

            memo[n] = res if res != float('inf') else -1  # 保存计算结果
            return memo[n]

        return dp(amount)

法三、dp数组的迭代解法

class Solution:
    def coinChange(self, coins: List[int], amount: int) -> int:
        # 创建一个数组来保存中间结果
        dp = [float('inf')] * (amount + 1)
        # base case
        dp[0] = 0

        # 自底向上迭代
        for i in range(1, amount + 1):
            for coin in coins:
                if i - coin >= 0:
                    dp[i] = min(dp[i], 1 + dp[i - coin])

        return dp[amount] if dp[amount] != float('inf') else -1

标签:return,int,res,coins,322,零钱,amount,兑换,dp
From: https://www.cnblogs.com/lushuang55/p/17971097

相关文章

  • 微信商家转账到零钱,既能单笔又能批量,支持多商户管理
    大家好,我是小悟微信商家转账到零钱的功能大家应该都熟悉吧,为了满足商家向用户微信零钱转账的需求,微信支付推出【商家转账到零钱】服务,方便商户可以一次向单个或多个用户的微信零钱转账。商家转账到零钱为商户提供了简便、免费、安全的转账服务。使用该功能可以帮助商户更加便捷、安......
  • 无线麦克风en50322测试标准是什么?
    en50332-1:2000音响系统设备:与便携音响设备相应的耳机和头戴式耳机.声音压力水平测量方法和限制考虑.第1部分:单一包装设备的一般方法。en50332-2:2004音响系统设备:与便携音频设备相应的耳机和头戴式耳机.声压级测量方法和限制考虑.第2部分:单独提供或同时提供时头戴式耳机设置......
  • # 2023-2024-1 20231322 《计算机基础与程序设计》第十三周学习总结
    作业信息|2022-2023-1-计算机基础与程序设计)||--|--||2022-2023-1计算机基础与程序设计第十三周作业||这个作业的目标|总结本周学习成果及疑问||作业正文|()|教材学习内容总结《C语言程序设计》第12章,结构体,共用体,数据结构基于AI的学习学习进度条代码行数(新增/累......
  • DDNS使用公云(3322)的兄弟们注意了
    9月份周六开始就出现陆续解析不了f3322.net的域名,但是新建的xf3322.net的则没问题,到周一官方发布公告才知道被限制了,所以如果华为、华三等设备上面动态公网IP关联了公云(3322)DDNS的朋友,删除之前的域名新注册x3322.net的就可以继续使用了。(按官方的意思目前f3322.net处于整顿状态,多久......
  • 2024 20231322《计算机基础与程序设计》第十二周学习总结
    作业信息|2022-2023-1-计算机基础与程序设计)||--|--||2022-2023-1计算机基础与程序设计第周作业||这个作业的目标|总结本周学习成果及疑问||作业正文|()|教材学习内容总结本周主要学习了数组和指针的相关内容教材学习中的问题和解决过程问题1:是否所有指针都要加*,包括函......
  • 2023-2024-1 20232322罗上林 《网络》第六周学习总结
    教材学习内容总结教材学习中的问题和解决过问题一:不理解半虚化的含义问题一解决方案:询问百度得知半虚拟化和全虚拟化的区别是什么?二者一字之差,但是实质却大不相同。两者不同点在于通过是否改变操作系统内核设置,目的都是为了实现虚拟化。一般Xen虚拟机包含了完全虚拟化(fullvir......
  • 生活记录:和大师姐及实验室师兄弟一起吃鸡公煲留念——集积分兑换“毛绒玩具小猪”
    在实验室时每每出去聚餐吃饭总是喜欢去附近的鸡公煲,那家也是有个积分兑换毛绒玩具的活动,虽然最后也没有攒够积分而那家店在疫情中也没有熬过去,不过当年吃鸡公煲时是一直惦记着这个玩偶的,虽然未能实现自己的小目标但是这个经历还是蛮值得纪念的。   可爱的毛绒玩具——“小粉猪”......
  • 【题解】AtCoder abc322_f Random Update Query
    传送门:https://atcoder.jp/contests/abc332/tasks/abc332_f容易发现,对于一个位置$i$,$A_i$的最终值是由对$i$的最后一次赋值操作决定的;因此,将所有操作按时间顺序倒过来考虑,则由第$j$次操作决定$A_i$最终值的概率为"在第$(j+1)$~$m$次操作中没有修改过$i$的概率"与"第......
  • P3227 [HNOI2013] 切糕
    题意linkSol考虑不戴限制的情况,那就是对于每一层连到下一层跑网络流。考虑戴上添边,不难发现向相邻的点连一条\(inf\)边就行了。Code#include<iostream>#include<algorithm>#include<cstdio>#include<array>#include<queue>#defineintlonglong#definepiipa......
  • 2023-2024-1 20232322 罗上林 《网络》第五周学习总结
    教材学习内容总结教材学习中的问题和解决过程-问题一:对信息内容安全威胁的来源不知道-问题一解决方案:-问题二:对信息内容过滤不理解-问题二解决方案:基于AI的学习参考资料《网络空间安全导论》网络空间安全导论书单......