LeetCode讲解篇之322. 零钱兑换

文章目录

题目描述

题解思路

我们可以使用动态规划解决这道题,我们首先定义一个数组,数组中第i个元素表示组成金额 i 的最少硬币个数

我们遍历数组的1 ~ amount号位置,对coins进行遍历,查找选择哪个硬币会让组成当前金额的硬币数最少

题解代码

go 复制代码
func coinChange(coins []int, amount int) int {
    f := make([]int, amount + 1)

    for i := 1; i <= amount; i++ {
        f[i] = math.MaxInt
        for _, coin := range coins {
            if i - coin < 0 || f[i - coin] == -1 { // 无法使用当前硬币组成当前金额
                continue
            }

            f[i] = min(f[i], f[i - coin] + 1) // 取硬币个数最小值
        }
        if f[i] == math.MaxInt {
            f[i] = -1
        }
    }

    return f[amount]
}

题目链接

https://leetcode.cn/problems/coin-change/description/

相关推荐
Zhang~Ling4 分钟前
C++ 红黑树封装:myset和mymap的底层实现
开发语言·数据结构·c++·算法
ECT-OS-JiuHuaShan5 分钟前
什么是对和错?——“有针对性定义域的逻辑值的真伪”:认识论终极追问的公理化裁决
数据库·人工智能·算法·机器学习·数学建模
Merlyn1021 分钟前
【栈】155. 最小栈
python·算法
一个不知名程序员www41 分钟前
算法学习入门---算法题DAY5
c++·算法
San813_LDD43 分钟前
[量化]《虚函数调用时间复杂度完全解析:为什么是 O(1) 以及它的真实代价》
java·数据结构·算法
MartinYeung51 小时前
[论文学习]利用索引梯度优化基于优化的 LLM 越狱攻击:MAGIC 方法的深度分析与实现
人工智能·学习·算法
pyz6661 小时前
LeetCode - Hot 100 - 滑动窗口最大值
leetcode
数据仓库搬砖人1 小时前
特征选择三剑客:前向、后向、全子集,哪种更适合你?
算法
起个破名想半天了1 小时前
算法与数据结构之Floyd算法
数据结构·算法
千寻girling1 小时前
机器学习 | 无监督学习算法(了解) | 尚硅谷学习
学习·算法·机器学习