leetcode热题100.零钱兑换(动态规划)

今天给大家分享一道动态规划的常考题,零钱兑换,很有趣的动态规划题目,希望可以对大家找工作过程中起到帮助,帮助大家拓展下思维

给你一个整数数组 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

Problem: 322. 零钱兑换

文章目录

解题过程

使用动态规划的解法,定义dp[i]为:凑够金额i所用到最小多少枚硬币,,定义硬币面额为c,遍历所有的硬币面额,我们可以发现这样一个转移关系,如果此时i>=c,则:
d p [ i ] = d p [ i − c ] + 1 dp[i] = dp[i-c]+1 dp[i]=dp[ic]+1
最初我们定义所有的dp为极大值,dp[0]为0(因为凑过0元需要0个硬币),我们的目标值为target,最终返回dp[target]即可

复杂度

  • 时间复杂度,假设目标值为m,有n个硬币: O ( m ∗ n ) O(m*n) O(mn)
  • 空间复杂度: O ( m ) O(m) O(m)

Code

class Solution:
    def coinChange(self, coins: List[int], amount: int) -> int:
        dp = [inf] * (amount+1)
        dp[0] = 0
        for i in range(1,amount+1):
            for c in coins:
                if i>=c:
                    dp[i] = min(dp[i],dp[i-c] + 1)
        return dp[amount] if dp[amount]!=inf else -1

相关推荐

  1. LeetCode100】【动态规划零钱兑换

    2024-07-12 23:54:06       32 阅读
  2. leetcode100.零钱兑换动态规划

    2024-07-12 23:54:06       19 阅读
  3. 动态规划 Leetcode 322 零钱兑换

    2024-07-12 23:54:06       163 阅读
  4. 动态规划Leetcode 322. 零钱兑换【中等】

    2024-07-12 23:54:06       22 阅读
  5. 动态规划——零钱兑换

    2024-07-12 23:54:06       33 阅读
  6. LeetCode 100 动态规划专题解析

    2024-07-12 23:54:06       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 23:54:06       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 23:54:06       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 23:54:06       57 阅读
  4. Python语言-面向对象

    2024-07-12 23:54:06       68 阅读

热门阅读

  1. 跟我从零开始学STL(STL代码基础02)---vector容器

    2024-07-12 23:54:06       18 阅读
  2. 数据结构第18节 散列表 - 应用

    2024-07-12 23:54:06       21 阅读
  3. C# Modbus

    2024-07-12 23:54:06       21 阅读
  4. 安卓热门面试题一

    2024-07-12 23:54:06       19 阅读
  5. React组件间通信的几种方式

    2024-07-12 23:54:06       18 阅读
  6. TCP/IP模型和OSI模型的区别(面试题)

    2024-07-12 23:54:06       20 阅读
  7. opencv--把cv::Mat数据转为二进制数据的保存和读取

    2024-07-12 23:54:06       19 阅读
  8. 扫地机器人如何进行MTBF测试

    2024-07-12 23:54:06       18 阅读
  9. ffmpeg和imagemagick制作gif动图

    2024-07-12 23:54:06       22 阅读