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];
    }
}
相关推荐
心勤则明13 小时前
使用SpringAIAlibaba给上下文“瘦身”
java·人工智能·spring
keep intensify13 小时前
单源最短路径
数据结构·c++·算法
2401_8735449213 小时前
分布式缓存一致性
开发语言·c++·算法
香芋超新星13 小时前
反转字符串中的小写字母
算法
篮l球场13 小时前
数组中的第K个最大元素
数据结构·算法·leetcode
YMWM_13 小时前
python3中的装饰器介绍及其应用场景
java·后端·spring
sheji341613 小时前
【开题答辩全过程】以 基于Java的饮品店管理系统的实现为例,包含答辩的问题和答案
java·开发语言
大阿明13 小时前
Spring.factories
java·数据库·spring
菜鸟程序员专写BUG13 小时前
SpringBoot 事务失效报错全集|rollback不生效/事务不回滚/传播机制踩坑全解决
java·spring boot·spring
月落归舟13 小时前
排序算法---(三)
数据结构·算法·排序算法