Leetcode 322. Coin Change

LeetCode 322 Coin Change (python) 目录LeetCode 322 Coin Change (python)分析状态定义状态转移Code欢迎一起来参与leetcode刷题项目 LeetCode 322 Coin Change (python) 分析 这题本质上是一个完全背包问题,我们有给定面额的货币,用它们得到一个金额,每种面额的货币使用数量不限。很明显了,完全背包 状态定义 既然是背包问题,现在再来看看怎么定义状态。依然很明显。==... 阅读详情

Leetcode 322. Coin Change

source url

题目描述

You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

Example 1:
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)

Example 2:
coins = [2], amount = 3
return -1.

输入:硬币种类数组、金额
输出:所需要最少的硬币数;无法满足时返回-1

思路

动态规划:用f[i]表示金额为i时,所需要最少硬币数量。此处,考虑类似滑动窗口的情况。对于每个金额,都可根据硬币的种类,并增加一个硬币到达下一个金额。而到达新的金额时,需要判断取已有硬币数量与新硬币数量的较小值。
首先将硬币根据大小进行排序
Sort(Coins)
其次,对f数组进行初始化,对于已有种类,默认置1,即

for(int i =0;i<coins.size()&&coins[i]<=amount;i++){
    f[coins[i]] = 1;
}

状态转移方程:

i=[coins[0],amount]

j=[0,coins.size())

f[i+coins[j]]=min(f[i+coins[j]],f[i]+1)

那么f[amount]就是答案,复杂度 O(n2)

代码

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        if(amount==0) return 0;
        if(coins.size()==0) return -1;
        sort(coins.begin(),coins.end());
        vector<int> f(amount+1,amount+1);


        for(int i =0;i<coins.size()&&coins[i]<=amount;i++){
                f[coins[i]] = 1;
        }


        for(int i =coins[0];i<=amount;i++){
            for(int j=0;j<coins.size()&&(i+coins[j])<=amount&&(i+coins[j]>0);j++){
                f[i+coins[j]] = min(f[i+coins[j]], f[i]+1);
            }
        }

        return f[amount]>=amount+1?-1:f[amount];
    }
};
LeetCode刷题:322. Coin Change LeetCode刷题:322. Coin Change 原题链接:https://leetcode.com/problems/coin-change/ You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest ... 阅读详情

相关推荐

突发环境事件怎么模拟?用Python+GIS实现高斯烟团模型(附完整代码)

本文详细介绍了如何利用Python与GIS技术实现高斯烟团模型,用于模拟化工泄漏等突发环境事件的动态扩散过程。通过核心原理讲解、参数快速获取方案、Python代码实现及GIS可视化集成,为环境应急人员提供了一套完整的解决方案。特别适合危险品运输事故等瞬态污染场景的应急决策支持。

weixin_33692284的博客 488

LeetCode 322. Coin Change

题目:You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of m

Lau_r_k的博客 533

【为K8s的coredns配置上游DNS服务器】

为K8s的coredns配置上游DNS服务器一、背景描述二、如何修改coredns达到目的三、修改coredns 解析指定域名走指定dns①、get coredns configmap②、修改coredns configmap③、查询现有coredns pod并逐个重启④、验证解析是否正确 一、背景描述 有一个项目需要部署到客户内网,并通过nat映射实现外网访问! 项目中有多个服务之间调用是走的外网域名,项目采用k8s集群容器部署,客户的网络情况导致服务之间通过外网域名互调时总是 connection ti

那个那个 6676

leetcode 322. Coin Change-硬币交换|动态规划

原题链接:322. Coin Change 【思路】 本题考查动态规划。也许一开始很容易想到用贪心算法,但是贪心算法在某些情况下是不成立的,比如coins = [1, 3, 5, 6],要amount = 11,用贪心法返回3,实际上最少的是2(3 + 5)。因而改用动态规划,用dp存储硬币数量,dp[i] 表示凑齐钱数 i 需要的最少硬币数,那么凑齐钱数 amount 最少硬币数为:固定钱数

hdtopku 1万+

Vivado 2018.3 SDK烧写bin文件避坑指南:如何解决QSPI模式下的常见错误

本文深入解析了在Vivado 2018.3 SDK中为Zynq FPGA烧写QSPI Flash时遇到的常见问题,特别是启动模式为QSPI时出现的警告与失败。文章从Zynq启动机制入手,提供了修改FSBL代码以强制使用JTAG模式、调整硬件配置等核心解决方案,并分享了实战案例与最佳实践,帮助开发者高效避坑,确保bin文件烧写成功。

arduino9maker的博客 390

3款主流AIGC模型部署方案对比:本地、云端与混合架构的成本与性能分析

本文对比分析了3种主流AIGC模型部署方案(本地、云端与混合架构)的成本与性能差异,帮助企业在预算、性能和维护复杂度之间找到最佳平衡点。通过实际案例和详细数据,展示了不同部署方式在延迟、扩展性、数据隐私等方面的优劣势,为技术决策者提供实用参考。

weixin_33158887的博客 373

leetcode 322. Coin Change 解题报告

原题链接原题链接解题思路题目很熟悉,和以前做过的一道很类似,于是想都没想就知道肯定是动态规划。 建立一个dp数组。dp[i]表示当凑齐i时最少要多少个数字组成。状态转移方程dp[i] = Math.min(dp[i-k] + 1,dp[i]); 解释一下吧,dp[i-k]只要不等于Integer.MAX_VALUE,证明凑齐i-k,有解。并且前面已经算出来了,这时候再加上k的1位数字就行。为了保

jly0612的博客 1357

魔兽世界怀旧服宏命令全解析:从自动换装到智能判定,老玩家才知道的黑科技

本文全面解析魔兽世界怀旧服宏命令的高级应用,从自动换装到智能判定,揭秘老玩家专属的黑科技技巧。深入探讨怀旧服特有的宏命令机制,包括施法队列、装备切换系统和职业专属技巧,帮助玩家在经典旧世版本中提升战斗效率。

weixin_29230865的博客 740

LeetCode 322. Coin Change 题解

本题是动态规划的经典应用问题,主要考察对动态规划思想的理解和使用。通过使用动态规划,我们可以高效地计算凑成总金额所需的最少硬币个数。动态规划的核心思想是:定义一个数组dp,其中dp[i]表示凑成金额i所需的最少硬币个数,然后遍历每个金额,更新dp数组。这种方法不仅适用于硬币兑换问题,还可以应用于许多其他类似的问题,例如完全背包问题。掌握动态规划的思想,对于解决这类问题非常重要。

cannonjinx的博客 4379

流体仿真软件:COMSOL Multiphysics二次开发_(3).流体仿真基础理论

流体仿真基础理论包括流体的基本性质、流体运动方程、边界条件、初始条件、湍流模型和网格生成等。在使用COMSOL Multiphysics进行流体仿真时,正确设置这些参数和条件是获得准确仿真结果的关键。通过实际应用案例,可以更好地理解如何在COMSOL中进行流体仿真,并提取和分析仿真结果。希望本文对流体仿真初学者和从业人员有所帮助。

kkchenjj的博客 1343

图像处理 | 基于matlab的多尺度Retinex(MSR)和自适应直方图均衡化(CLAHE)算法联合的低照度图像增强(附代码)

本文介绍了一种基于多尺度Retinex(MSR)和CLAHE的低照度图像增强算法。算法首先对图像进行多尺度Retinex处理,通过不同尺度的高斯核去除光照影响;然后采用CLAHE算法进行对比度增强。Matlab实现展示了算法流程,包含灰度转换、多尺度Retinex增强和CLAHE处理。实验结果显示,该方法能有效提升低照度图像的可见性,增强细节表现。最后提出了改进建议,包括引入深度学习方法和优化参数选择。

尘世冰封的专栏 954

leetcode题集: 322. Coin Change

实在是太懒了,写博客真的懒得写。今天就一起写几篇动态规划的好了 第9题:322.Coin Change 题目大意:就是换零钱!给出可换的零钱种类,求最后换得零钱的最小张数(coin的个数),每种可换的零钱数目无限。 题目分析:思路很明确,就是找零钱从最大的开始找呗,依次找当前可换的最大数额的零钱,显然可以用动态规划的思想解决,是一个很简单的动态规划问题,状态转移方程: ...

wx_14678的博客 245

Xilinx FPGA平台GTX简易使用教程(汇总篇)

Xilinx平台GTX简易使用教程,先“知其然”,慢慢再研究“所以然”。

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 3万+

Leetcode322. Coin Change-动态规划

Leetcode322. Coin ChangeLeetcode322. Coin Change题目思路回头看的最佳选择复杂度代码 Leetcode322. Coin Change 题目 题目链接 思路 将目标数额记为amount,拥有的面值包含在coins中 从1到amount,每个数额都至少由一个coin组成,那剩下的是left = amount-coin,left的计算也由同样方式得出 如amount=10,coins = [1, 2, 5]: 10可以由9+1,8+2,5+5组成,那么在这三个中,取

qq_17065591的博客 408

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

leetcode 322. Coin Change

一、题意 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 二、解法 解法: 动态规划 dp[i]表示金额为i的最少需要的硬币有多少个 dp[i]=min(dp[i],dp[i-coins[j]]+dp[coins[j]]),dp[i]>0。从1开始到i求dp[i],就可以将i之间的结果都求好,dp[i]即为结果。 时

Genius_J的博客 440

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

leetcode学习笔记322 Coin Change

leetcode学习笔记322问题思考方法1 问题 Coin Change You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up

kuma的博客 180

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LeetCode-322. Coin Change [C++][Java]

Returnthe fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return-1.

贫道绝缘子的博客 531

Leetcode 322. Coin Change (Medium) (cpp)

Leetcode 322. Coin Change (Medium) (cpp)

还是需要多学习!闷声大发财,这是坠吼的! 844

每周LeetCode算法题(十一) 题目: 322. Coin Change

每周LeetCode算法题(十一)题目: 322. Coin Change You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make

JacKnights的博客 410

LeetCode练习题322. Coin Change

题目 You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of mo...

看门猫的博客 238

[LeetCode 322] Coin Change

You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of mone

coder 进阶的专栏 3526
上一篇: Leetcode 91. Decode Ways
下一篇: Leetcode 152. Maximum Product Subarray
vincentCheungM
博客等级 码龄10年 4粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值