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];
    }
}
相关推荐
daidaidaiyu8 小时前
Jetlinks 物联网平台 开源版学习源码分析
java·mqtt·rxjava·tcp
j***78888 小时前
clickhouse-介绍、安装、数据类型、sql
java
q***47189 小时前
Spring中的IOC详解
java·后端·spring
vx_vxbs669 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
SunnyDays10119 小时前
如何使用 Java 删除 Word 文档中的水印
java·删除word文档水印
毕设源码-邱学长10 小时前
【开题答辩全过程】以 基于Java企业人事工资管理系统为例,包含答辩的问题和答案
java·开发语言
转转技术团队10 小时前
回收系统架构演进实战:与Cursor结对扫清系统混沌
java·架构·cursor
AI分享猿10 小时前
Java后端实战:SpringBoot接口遇异常请求,轻量WAF兼顾安全与性能
java·spring boot·安全
稚辉君.MCA_P8_Java10 小时前
Gemini永久会员 Java中的四边形不等式优化
java·后端·算法
DKPT10 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring