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/

相关推荐
智者知已应修善业3 分钟前
【51单片机独立按键和定时器中断的疑惑验证】2023-11-2
c++·经验分享·笔记·算法·51单片机
折翅嘀皇虫6 分钟前
【无标题】steal_work_thread_pool
服务器·前端·算法
zzzsde6 分钟前
【Linux】线程概念与控制(3):线程ID&&C++封装线程
linux·运维·服务器·开发语言·算法
handler0114 分钟前
滑动窗口(同向双指针)算法:模板与例题解析
c语言·c++·笔记·算法·蓝桥杯·双指针·滑动窗口
Brilliantwxx17 分钟前
【算法题】基础计算器的不同实现方式
c++·算法
Sunsets_Red18 分钟前
P12375 「LAOI-12」MST? 题解
c++·算法·洛谷·信息学·oier·洛谷题解
_深海凉_38 分钟前
LeetCode热题100-二叉树的直径
算法·leetcode·职场和发展
shylyly_39 分钟前
大小端字节序
数据结构·算法·联合体·大小端字节序·字节序判断
mmz120742 分钟前
深度优先搜索DFS3(c++)
c++·算法·深度优先
水蓝烟雨43 分钟前
3373. 连接两棵树后最大目标节点数目 II
算法·leetcode