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

1.题目描述

2.思路

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

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

(1)确定dp数组的含义

(2)装满容量为j,最少的物品为dpj,要求硬币数量dpamount

(3)dp0=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];
    }
}
相关推荐
许彰午40 分钟前
03-三种开发模式
java·架构
遥感知识服务1 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶1 小时前
1-13-TimSort
算法
Rain的Java大神之路1 小时前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
ZJU_统一阿萨姆1 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
2602_959960922 小时前
谢飞机面试大厂:Spring Boot、JVM、Redis、Kafka、微服务与音视频搜索场景求生实录
java·jvm·spring boot·redis·面试题
Zane1994122 小时前
CAS 与原子类:Java 如何实现无锁编程
java·开发语言
略略略咯咯2 小时前
AI玩具-study
java
叩码以求索3 小时前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
xier_ran4 小时前
【infra之路】GPU 存储层次总结:L1 / L2 / HBM
java·网络·数据库