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];
    }
}
相关推荐
在未来等你几秒前
设计模式精讲 Day 4:建造者模式(Builder Pattern)
java·: design-patterns·builder-pattern·software-design·object-oriented-programming
Cyrus_柯7 分钟前
C++(面向对象编程)
开发语言·c++·算法·面向对象
今天我要乾重生22 分钟前
java基础学习(三十)
java·开发语言·学习
wen__xvn29 分钟前
九日集训第六天
数据结构·算法·leetcode
JWASX2 小时前
【RocketMQ 生产者和消费者】- 消费者重平衡(1)
java·rocketmq·重平衡
剽悍一小兔2 小时前
自动化文档生成工具(亲测可运行)
java
程序员皮皮林2 小时前
使用 Java + WebSocket 实现简单实时双人协同 pk 答题
java·websocket
栗然2 小时前
Spring Boot 项目中使用 MyBatis 的 @SelectProvider 注解并解决 SQL 注入的问题
java·后端
im_AMBER2 小时前
java复习 19
java·开发语言
陆少枫2 小时前
JDBC强化关键_009_连接池
java·数据库·mysql