【算法刷题】—7.29完全背包问题,零钱兑换

简介: 【✨今日算法一题零钱兑换||

✨今日算法一题


零钱兑换||


文章目录


零钱兑换||


题目描述


思路详解


本题用了完全背包的思想。

我们利用双重循环,进行对金额的判断。进行累计。

详细见代码注释。


代码与结果

class Solution {
    // 组合数
    public int change(int amount, int[] coins) {
        Arrays.sort(coins);
        // 这里取 amount + 1, 是因为要含 dp[0],即金额为0
        int[] dp = new int[amount + 1];
        // 注意初始值为1,而不是0
        dp[0] = 1;
        // 硬币面值作为外循环
        for (int coin : coins) {
            // 金额作为内循环,且保证组合不重复
            // 这里i从coin开始的原因是:当 i < coin时,没有硬币满足要求。
            for (int i = coin; i <= amount; i++) {
                // i - coin 表示剩余的金额
                // 使用dp[i - coin]可以利用之前的计算结果
                // 注意每个dp[i], i>0,初始值均为0
                dp[i] = dp[i] + dp[i - coin];
            }
        }
        return dp[amount];
    }
}


相关文章
|
6月前
|
机器学习/深度学习 存储 算法
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
|
5月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】合并两个有序链表
【数据结构与算法 刷题系列】合并两个有序链表
|
27天前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
12 0
|
3月前
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
|
3月前
|
算法 Python
【Leetcode刷题Python】改进的算法,高效求一个数的因子
一个高效的Python函数用于找出一个整数的所有因子,通过仅遍历到该数平方根的范围来优化性能。
37 0
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
5月前
|
算法
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
|
5月前
|
算法
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
|
5月前
|
算法
【数据结构与算法 刷题系列】移除链表元素
【数据结构与算法 刷题系列】移除链表元素