当前位置: 首页 > news >正文

2024.3.25力扣每日一题——零钱兑换2

2024.3.25

      • 题目来源
      • 我的题解
        • 方法一 动态规划

题目来源

力扣每日一题;题序:518

我的题解

方法一 动态规划

给定总金额 amount 和数组 coins,要求计算金额之和等于 amount 的硬币组合数。其中,coins的每个元素可以选取多次,且不考虑选取元素的顺序,因此这道题需要计算的是选取硬币的组合数。
可以通过动态规划的方法计算可能的组合数。用 dp[x]表示金额之和等于 x的硬币组合数,目标是求 dp[amount]。
动态规划的边界是 dp[0]=1。只有当不选取任何硬币时,金额之和才为 0,因此只有 1 种硬币组合。
对于面额为 coin 的硬币,当 coin≤i≤amount时,如果存在一种硬币组合的金额之和等于 i−coin,则在该硬币组合中增加一个面额为 coin的硬币,即可得到一种金额之和等于 i 的硬币组合。因此需要遍历 coins,对于其中的每一种面额的硬币,更新数组 dp中的每个大于或等于该面额的元素的值。

时间复杂度:O(Sn)。S是需要匹配的金额,n为面额数
空间复杂度:O(S)

    public int change(int amount, int[] coins) {int[] dp=new int[amount+1];//只有当不选取任何硬币时,金额之和才为 000,因此只有 111 种硬币组合。dp[0]=1;//因为外层循环是遍历数组 coins 的值,内层循环是遍历不同的金额之和,在计算 dp[i]的值时,可以确保金额之和等于 i 的硬币面额的顺序,由于顺序确定,因此不会重复计算不同的排列。for(int coin:coins){for(int i=coin;i<=amount;i++){dp[i]+=dp[i-coin];}}return dp[amount];}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

http://www.lryc.cn/news/333027.html

相关文章:

  • 包子凑数【蓝桥杯】/完全背包
  • 口语 4.6
  • 使用Docker 部署jenkins 实现自动化部署
  • golang语言系列:Web框架+路由 之 Gin
  • 春招百题--堆
  • 全志A40i android7.1 移植wifi驱动的一般流程
  • Qt——Qt绘图之QPainter的使用总结(使用paintEvent实现旋转图片效果)
  • Day83:服务攻防-开发组件安全JacksonFastJson各版本XStreamCVE环境复现
  • 【QT+QGIS跨平台编译】056:【pdal_kazhdan+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 泰坦尼克号幸存者数据分析
  • Memcached 教程之 PHP 连接 Memcached 服务(十)
  • 【zlm】音视频流与音频流合并的设计
  • typescript的工作流
  • MATLAB下载与安装详细教程:从官方获取到成功启动
  • 【随笔】Git 高级篇 -- 分离 HEAD(十一)
  • mac、windows 电脑安装使用多个版本的node
  • vue 浅解watch cli computed props ref vue slot axios nexttick devtools说明使用
  • Unity自定义框架(1)-----------单例模式
  • 04-自媒体文章-自动审核
  • LeetCode-热题100:763. 划分字母区间
  • IDEA2023创建SpringMVC项目
  • ubuntu-server部署hive-part2-安装hadoop
  • Python深度学习032:conda操作虚拟环境env的全部命令
  • 使用Java拓展本地开源大模型的网络搜索问答能力
  • Mybatis——一对多关联映射
  • Pytorch实用教程:TensorDataset和DataLoader的介绍及用法示例
  • uni-app如何实现高性能
  • docker 应用部署
  • java.awt.FontFormatException: java.nio.BufferUnderflowException
  • C++ 枚举类型 ← 关键字 enum