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/

相关推荐
清 澜29 分钟前
大模型扫盲式面试知识复习 (二)
人工智能·面试·职场和发展·大模型
知乎的哥廷根数学学派1 小时前
基于多物理约束融合与故障特征频率建模的滚动轴承智能退化趋势分析(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习
我是一只小青蛙8881 小时前
位图与布隆过滤器:高效数据结构解析
开发语言·c++·算法
踩坑记录1 小时前
leetcode hot100 238.除了自身以外数组的乘积 medium
leetcode
eso19831 小时前
白话讲述监督学习、非监督学习、强化学习
算法·ai·聚类
chen_jared1 小时前
反对称矩阵的性质和几何意义
人工智能·算法·机器学习
海天一色y1 小时前
python---力扣数学部分
算法·leetcode·职场和发展
一起努力啊~2 小时前
算法刷题--哈希表
算法·面试·散列表
willingli2 小时前
c语言经典100题 61-70题
c语言·开发语言·算法
我是小疯子662 小时前
深入解析C++右值引用与移动语义
java·开发语言·算法