Leetcode NO.322 Coin Change 零钱兑换

LeetCode 322 | 史上最佳Coin Change题解(python) Coin change 硬币找零问题:给定一个数组coins表示零钱的面值,然后给出手头钱的总数amount,问最少可以用多少枚硬币找零。 Example 1: Input:coins=[1, 2, 5], amount = 11 Output:3 Explanation: 11 = 5 + 5 + 1 Example 2: Input:coins=[1, 2, 5], amount = 3 Output:-1 1.BFS(广度优先搜索) 以当前值amount为起点,相邻的每一个节点为am 阅读详情

1.问题描述

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。
你可以认为每种硬币的数量是无限的。

2.测试用例

示例 1
输入:coins = [1, 2, 5], amount = 11
输出:3 
解释:11 = 5 + 5 + 1
示例2
输入:coins = [2], amount = 3
输出:-1
示例3
输入:coins = [1], amount = 0
输出:0
示例4
输入:coins = [1], amount = 1
输出:1
示例5
输入:coins = [1], amount = 2
输出:2

3.提示

  • 1 <= coins.length <= 12
  • 1 <= coins[i] <= 231 - 1
  • 0 <= amount <= 104

4.代码

1.动态规划
code
/**
     * 零钱兑换
     * 时间复杂度 O(An) A->amount  n->零钱种类个数
     * 空间复杂度 O(A)  A->amount
     * @param coins
     * @param amount
     * @return
     */
public int coinChange(int[] coins, int amount) {
    int[] dp = new int[amount + 1];
    dp[0] = 0;
    for (int i = 1; i <= amount; i++) {
        int minCoinNum = Integer.MAX_VALUE;
        for (int coin : coins) {
            if (coin <= i && dp[i - coin] != -1) {
                minCoinNum = Math.min(minCoinNum, dp[i - coin] + 1);
            }
            System.out.print(minCoinNum + ",");
        }
        dp[i] = minCoinNum == Integer.MAX_VALUE ? -1 : minCoinNum;
    }
    return dp[amount];
}
复杂度
* 时间复杂度 O(An) A->amount  n->零钱种类个数
* 空间复杂度 O(A)  A->amount + 1
Python求解零钱兑换问题 输出东西只有这么点但是我思考了很久(哭)问题的分析思路可以参考思路的链接,但是up主的使用Matlab的写法让我在Python里写的很费劲(菜)关于and 前后的两个条件顺序不可以调换。如果调换,money-c可能是负数,超出了res的坐标范围,这时Python 并不会继续执行money-c>=0的条件,而是直接返回出out of range的错误。第一次做输出,如有不足欢迎佬们指正~ 阅读详情

相关推荐

从电商平台到微信私域:构建合规跳转链路的技术实现

在互联网营销与用户增长领域,链接跳转是连接不同平台、引导用户流量的基础技术。其核心原理是通过服务器端路由与参数解析,实现用户请求的接收、处理与重定向。这项技术的价值在于能够突破平台间的生态壁垒,实现流量的合规、可控迁移,尤其适用于跨平台营销、私域沉淀等场景。在实际应用中,常需处理微信环境限制、参数传递与动态内容生成等挑战。本文聚焦于电商平台(如淘宝)到微信生态的跳转需求,详细阐述了如何利用Node.js、Express框架及二维码生成技术,构建一个包含环境检测、参数传递与动态落地页的完整跳转系统,以解决微信

weixin_33889665的博客 323

322. Coin Change

int coinChange(int* coins, int coinsSize, int amount) { int max = amount+1; int *dp = (int*)malloc(sizeof(int)*(amount+1)); for(int i=1;i&amp;amp;lt;=amount;i++){ dp[i] = max; } ...

测试博客 363

从外包到转正:一个华为OD亲历者的真实工作体验与避坑指南

本文分享了一位华为OD员工从外包到转正的真实经历与实用建议。通过详细解析华为OD的日常工作、转正核心指标、机试备考技巧及职场突围策略,为读者提供了一份全面的避坑指南。特别针对机试E卷的高频考点和刷题方法,给出了具体的数据分析和实战经验。

weixin_33686714的博客 701

Leetcode之Coin change

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

qq_35455503的博客 308

从零打造M328晶体管测试仪:硬件DIY与烧录避坑指南

本文是一份详尽的M328晶体管测试仪DIY指南,涵盖从硬件选型、PCB设计、焊接组装到固件烧录的全过程。重点解析了使用AVR单片机与Arduino IDE环境时,如何正确设置熔丝位以避免“白屏”等常见问题,并提供了使用ISP编程器进行烧录的实操步骤与校准方法,帮助电子爱好者成功打造属于自己的高性价比元件测试工具。

weixin_29243063的博客 475

手把手教你配置MCAL中的CAN模块:从基础参数到实战避坑指南

本文提供了一份详尽的MCAL CAN模块配置指南,涵盖从基础参数设置到实战避坑的全过程。文章深入解析了CAN控制器核心参数、硬件对象配置、数据流处理及常见问题排查,并结合源码分析,帮助嵌入式开发者构建稳定高效的CAN通信链路,是汽车电子领域通信开发的实用参考。

weixin_29165465的博客 336

leetcode 322. Coin Change

第518题,要求的是装满背包的物品的组合数,不关心所选物品的先后顺序,因此求的是组合数,所以外层循环必须是对物品做遍历,内层循环必须是对容量做遍历。这道题要求的是最少可以用多少个物品装满背包,不关心所选物品的组合方式和排列方式。因此,外层循环既可以是对物品的遍历,也可以是对容量的遍历。这道题也是完全背包问题。注意与第518题和第377题对比。

weixin_41554427的博客 866

保姆级教程:用Code Blocks搞定中科蓝讯AB5768E蓝牙音响SDK开发环境(附资源包)

本文提供了一份详细的Code Blocks配置指南,帮助开发者快速搭建中科蓝讯AB5768E蓝牙音响SDK开发环境。从工具链安装、环境配置到工程导入和调试技巧,涵盖全流程避坑要点,特别适合K12开发板初学者。附资源包下载,助您高效完成蓝牙音响开发。

weixin_28692817的博客 448

【Leetcode】322. Coin Change

题目地址: https://leetcode.com/problems/coin-change/ 很经典的一道题,可以用动态规划做。设f(x)f(x)f(x)为xxx至少需要多少枚硬币支付,设c⃗\vec{c}c是硬币面额向量。如果用∞\infty∞代表无法支付,那么fff有递推方程:f(x)={1, ∃i,x=c[i]1+min⁡i∈{i:c[i]<x}f(x−ci),&nbsp...

数学、算法爱好者的博客 280

【教程4>第10章>第13节】基于FPGA的图像双边滤波开发——单通道双边滤波Verilog实现

本文介绍了基于Vivado 2022.2的单通道高斯滤波FPGA实现方案。主要内容包括:1)采用3×3窗口像素提取、高斯权值计算、exp指数运算等模块构建双边滤波系统;2)详细分析了Verilog HDL实现的顶层设计文件,包含窗口数据生成、指数计算、混合权重、归一化处理等关键模块;3)展示了图像双边滤波器的RTL结构图。该设计为后续实现RGB三通道图像高斯滤波及MATLAB联合仿真奠定了基础。

FPGA/MATLAB学习教程/源码/项目合作开发 262

Office系列完全干净卸载工具合集(最全)

使用 Microsoft Fix it 卸载 Microsoft Office 套件 一、Windows 7、Windows Vista或Windows XP下卸载Office 1.MicrosoftEasyFix50416 工具用来卸载office 2003 MicrosoftEasyFix50416_Office2003.msi 2.MicrosoftEasyFix50154 工具用来卸载office 2007 MicrosoftEasyFix50154_Office2007.msi 3.Microso

业精于勤,荒于嬉 3万+

leetcode-322-零钱兑换 (coin change)-java

题目及测试 package pid322; /*零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 示例 2: 输入: coin...

今天吃了吗的博客 1520

31、车载通信中的可见光通信(VLC)技术解析

本文详细解析了车载通信中可见光通信(VLC)技术的应用背景、优势及发展前景。对比传统RF通信技术(如DSRC),VLC利用LED照明设备实现高效、安全的车辆与车辆、车辆与基础设施之间的通信,具有频谱资源丰富、安全性高、无电磁干扰等优势。文章还探讨了VLC在交叉口交通控制、高速公路通信、自动驾驶等场景的应用潜力,展望了其在未来智能交通系统中的重要作用。

hill8的博客 318

leetcode 322. 零钱兑换(Coin Change)C语言

leetcode 322. 编辑距离(Coin Change)C语言1.description2.solution 1.description https://leetcode-cn.com/problems/coin-change/description/ 给定不同面额的硬币 coins 和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组...

hsk6543210的博客 1041

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LeetCode—322.零钱兑换(Coin Change)——分析及代码(C++)

# 二、分析及代码 ## 1. 深度优先搜索 ### (1)思路 对硬币面额进行降序排序,从大面额开始结合深度优先搜索方法尝试兑换: 1)若 硬币面额已遍历完成 或 兑换当前剩余金额所需的硬币总数,已超过目前答案,直接剪枝; 2)若 硬币面额 能够整除 当前剩余金额,计算硬币数并作为答案备选; 3)若 硬币面额 无法整除 当前剩余金额,从不超过剩余金额的最大数量硬币开始,逐个减少当前面额的硬币数量,并递归调用更小面额的硬币尝试兑换。 由于硬币面额是从大到小进行深度优先遍历,因此在剪枝过程中能够迅速排除大部

江南土豆的博客 656

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeetCode 322. 零钱兑换(Coin Change)

dp[i]:表示凑成总金额i所需的最少硬币数量。

2501_91641025的博客 558

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LeetCode 322. Coin Change 题解

本题是动态规划的经典问题,主要考察对状态定义和状态转移方程的理解。通过动态规划,我们可以高效地计算出凑成总金额所需的最少硬币个数。动态规划的核心思想是:通过填充一个一维数组,记录凑成每个金额所需的最少硬币个数。对于每个金额,遍历每种硬币面额,更新最少硬币个数。这种方法不仅适用于零钱兑换问题,还可以应用于许多其他需要动态规划解决的问题,例如完全背包问题、最少步数问题等。掌握动态规划的思想,对于解决这类问题非常重要。

cannonjinx的博客 4524

Leetcode 322. Coin Change 零钱兑换

Leetcode 322. Coin Change 零钱兑换322. Coin Change题目描述示例:解答代码 322. Coin Change 题目描述 You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewes...

importsys的博客 262

【LeetCode】 322. Coin Change 零钱兑换(Medium)(JAVA)每日一题

【LeetCode】 322. Coin Change 零钱兑换(Medium)(JAVA) 题目地址: https://leetcode.com/problems/coin-change/ 题目描述: You are given coins of different denominations and a total amount of money amount. Write a functi...

qq_16927853的博客 234

Leetcode 322. 零钱兑换(Coin Change)

Leetcode 322. 零钱兑换 1 题目描述(Leetcode题目链接)   给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 说明:你可以认为每种硬币的...

qq_39378221的博客 320

【小白爬Leetcode322】9.1 零钱兑换 Coin Change

【小白爬Leetcode322】9.1 零钱兑换 Coin Change 题目Discription思路一 DFS实现的动态规划解法(自上而下)思路二 遍历实现的动态规划解法(自下而上) Leetcode 322 medium\color{#FF4500}{medium}medium 点击进入原题链接:零钱兑换 Coin Change 题目 Discription You are given coins of different denominations and a total amount of

weixin_41604040的博客 304

LeetCode 322. 零钱兑换(Coin Change)

LeetCode.jpg 322. 零钱兑换 322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: ...

墨1024 286

【LeetCode】322. Coin Change 零钱兑换(Medium)(JAVA)

【LeetCode】322. Coin Change 零钱兑换(Medium)(JAVA) 题目地址: 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 number of coins that you need to

qq_16927853的博客 252

LeetCode:322. Coin Change - Python

322. 零钱兑换 问题描述: 给定不同面额的硬币coins和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 示例 2: 输入: coins = [2], amount = 3 输出...

Growth Diary 855

动态规划 Leetcode 322 Coin Change(零钱兑换)

题目 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。 链接(中文版):https://leetcode-cn.com/problems/coin-change 链接(英文版):https://leetcode.com/problems/coin-change 分析 用动态规划解题就是求出递推公式,对于本题,想求总金额为amount的答案(记为Answer(amount)),需要使用.

weixin_39228381的博客 7188

leetcode 322. 零钱兑换&343. 整数拆分

322. 零钱兑换343. 整数拆分题目分析代码题目分析代码 题目 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 示例 2: 输入: coins = [2], amount = 3 输出: -1 说明: 你可以认为每种硬币的数量是无限的。 来源:力扣(Leet

qq_43688155的博客 336
上一篇: 发票查验平台 https://inv-veri.chinatax.gov.cn 您的连接不是私密连接,不能访问问题
下一篇: Leetcode NO.46 Permutations 全排列
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值