2025年- H82-Lc190--322.零钱兑换(动态规划)--Java版

1.题目描述

2.思路

这里面钱币的数量是无限的。

装满这个背包(总金额)要用多少容量(硬币数量)。

(1)确定dp数组的含义

(2)装满容量为j,最少的物品为dp[j],要求硬币数量dp[amount]

(3)dp[0]=0

(4)不管是排列还是组合,这道题都是要装满背包。

格式:

for(物品) for(背包)-》组合数

for(背包)for(物品)-》排列数

3.代码实现

java 复制代码
class Solution {
    public int coinChange(int[] coins, int amount) {
        int max = Integer.MAX_VALUE - 1;
        int[] dp = new int[amount + 1];

        for (int i = 1; i <= amount; i++) {
            dp[i] = max;
        }

        dp[0] = 0;

        for (int i = 1; i <= amount; i++) { // 遍历金额
            for (int j = 0; j < coins.length; j++) { // 遍历硬币
                if (coins[j] <= i && dp[i - coins[j]] != max) {
                    dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);
                }
            }
        }

        return dp[amount] == max ? -1 : dp[amount];
    }
}
相关推荐
小葡萄202537 分钟前
VSCode 刷 LeetCode 算法题配置教程
vscode·算法·leetcode
慕y27438 分钟前
Java学习第一百一十七部分——ClickHouse
java·学习·clickhouse
程序员JerrySUN4 小时前
基于 RAUC 的 Jetson OTA 升级全攻略
java·数据库·redis
努力冲冲4 小时前
常用排序算法
java·算法·排序算法
yuezhilangniao6 小时前
关于开发语言的一些效率 从堆栈角度理解一部分c java go python
java·c语言·开发语言
码luffyliu6 小时前
Java NIO 核心原理与秋招高频面试题解析
java·nio
一只叫煤球的猫6 小时前
⚠️ 不是危言耸听,SpringBoot正在毁掉Java工程师
java·spring boot·spring
vvilkim6 小时前
深入理解Java访问修饰符:封装的艺术
java·开发语言
夜斗小神社7 小时前
【LeetCode 热题 100】(六)矩阵
算法·leetcode·矩阵
張萠飛7 小时前
生产环境Tomcat运行一段时间后,如何测试其性能是否满足后续使用
java·tomcat