当前位置: 首页 > article >正文

力扣 零钱兑换

完全背包,动态规划例题。

题目

这题跟完全背包跟完全平方数有点相似。在完全平方数中,用一个dp数组去取得目标金额的每一步的最优,当前状态可能来自上一个dp,也有可能比上一个dp更小,因此往回退一步加一做比较。在完全背包中,遍历到的物品是放还是不放使得收益大。

public class Solution {
    public int coinChange(int[] coins, int amount) {
        int max = amount + 1;
        int[] dp = new int[amount + 1];
        Arrays.fill(dp, max);
        dp[0] = 0;//未达到amount
        for (int i = 1; i <= amount; i++) {
            for (int j = 0; j < coins.length; j++) {
                if (coins[j] <= i) {
                    dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);
                }
            }
        }
        return dp[amount] > amount ? -1 : dp[amount];//状态未转移,amount达不到,返回-1
    }
}

当然,从背包上看,也可以先进行遍历物品,再遍历体积,会减少一些执行次数。

时间复杂度:O(Sn),空间复杂度:O(S)。S为amount。

public class Solution {
    public int coinChange(int[] coins, int amount) {
        int max = amount + 1;
        int[] dp = new int[amount + 1];
        Arrays.fill(dp, max);
        dp[0] = 0;
        for (int coin : coins) {
            for (int j = coin; j <= amount; j++) {
                dp[j] = Math.min(dp[j], dp[j - coin] + 1);
            }
        }
        return dp[amount] > amount ? -1 : dp[amount];
    }
}

动态规划还是要找准状态值及状态转移方程,注意dp数组的值是到目标值的最优解,是用来实现每一步状态的。


http://www.kler.cn/a/541465.html

相关文章:

  • Flutter PIP 插件 ---- Android
  • java.io.InvalidClassException
  • 网易日常实习一面面经
  • 免费在腾讯云Cloud Studio部署DeepSeek-R1大模型
  • Shapefile格式文件解析和显示
  • 在 Open WebUI+Ollama 上运行 DeepSeek-R1-70B 实现调用
  • DeepSeek全球第二,R1生态扩展,华为荣耀接入,OpenAI推出深度研究,谷歌Gemini 2.0发布!AI Weekly 2.3-2.9
  • ASP.NET Core SignalR案例:导入英汉词典
  • CNN-LSTM卷积神经网络长短期记忆神经网络多变量多步预测,光伏功率预测
  • 【Rust中级教程】1.3. 内存 Pt.1:各类概念的定义及变量的高级模型和低级模型
  • Node.js调用DeepSeek Api 实现本地智能聊天的简单应用
  • 访问修饰符(C#)
  • DeepSeek接口联调(postman版)
  • 在 C++ 中使用 Protocol Buffers(protobuf)
  • ESLint 如何处理 ES6+ 语法
  • excel LOOKUP
  • Git 分布式版本控制工具使用教程
  • 第四节 docker基础之---dockerfile部署JDK
  • javaEE-11.javaScript入门
  • Oracle的学习心得和知识总结(三十三)|Oracle数据库数据库的SQL ID的底层计算原理分析
  • 神经网络常见激活函数 7-ELU函数
  • SOME/IP报文格式及发现协议详解
  • JUnit 5 源码结构概览
  • 基于web前端对简书页眉的开发及登陆的跳转
  • 项目6:基于大数据校园一卡通数据分析和可视化
  • 每日一题——缺失的第一个正整数