70. 爬楼梯 (进阶),322. 零钱兑换,279.完全平方数

代码随想录训练营第45天|70. 爬楼梯 (进阶,322. 零钱兑换,279.完全平方数

70.爬楼梯

文章

代码随想录|0070.爬楼梯完全背包版本

思路

将楼梯长度视为背包容量,将一步的跨度视为物品价值,则可以转化为完全背包问题

代码

java 复制代码
class Solution {
    public int climbStairs(int n) {
        int i, j;
        int[] dp = new int[n + 1];
        dp[0] = 1;
        for (j = 0; j < n + 1; ++j) {
            for (i = 0; i < 2; ++i) {
                if (j >= i + 1) {
                    dp[j] += dp[j - i - 1];
                }
            }
        }
        return dp[n];
    }
}

322.零钱兑换

文章

代码随想录|0322.零钱兑换

思路

dp数组初始化全为正无穷

dp0单独设为0

外层遍历物品,内层遍历背包容积
d p j = M i n ( d p j , d p j − c o i n s \[ i ] + 1 ) dpj=Min(dpj, dpj-coins\[i]+1) dpj=Min(dpj,dpj−coins\[i]+1)

代码

java 复制代码
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 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];
    }
}

279.完全平方数

文章

代码随想录|0279.完全平方数

思路

n为背包容量,i^2为物品价值,单个物品最大价值为sqrt(n)
d p j = M i n ( d p j , d p j − i 2 + 1 ) dpj=Min(dpj,dpj-i\^2+1) dpj=Min(dpj,dpj−i2+1)

代码

java 复制代码
class Solution {
    public int numSquares(int n) {
        int i, j;
        int[] dp = new int[n + 1];
        Arrays.fill(dp, n);
        dp[0] = 0;
        int upper = (int) Math.sqrt(n);
        for (i = 1; i <= upper; ++i) {
            for (j = 1; j < n + 1; ++j) {
                if (j >= i * i) {
                    dp[j] = Math.min(dp[j], dp[j - i * i] + 1);
                }
            }
        }
        return dp[n];
    }
}

总结

二刷,还是会出错

牢牢记住,求组合数外层物品内层背包

相关推荐
高级程序源2 小时前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
IT研究室2 小时前
最新计算机毕业设计选题推荐-基于spring boot的文学名著分享系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
denlaku2 小时前
JDK 13 新特性详解
java·开发语言
秋饼2 小时前
Java 后端企业级 LLM 网关实战:Spring Cloud Gateway 构建统一大模型接入层
java·ai·技术分享·后端开发
今年下半年2 小时前
【防重放】Spring Boot 通过自定义注解实现接口防重放
java·spring boot·自定义注解·防重放
WeiXin_DZbishe2 小时前
基于Node.js的马拉松赛事管理系统的设计与实现-计算机毕设 附源码【课程设计】90211
java·javascript·vue.js·python·php·课程设计
Wang's Blog2 小时前
Java 项目部署之 Docker工具快速入门: 使用 Docker 镜像命令练习
java·docker
企业数字化笔记3 小时前
多租户系统从哪里开始设计?租户身份、数据隔离、权限与套餐的整体方案
java·spring boot·后端·junit
tiger从容淡定是人生3 小时前
从 Gemini 的任务示例出发:AI 能否从知识中推导工作流?
java·人工智能·aigc·知识图谱·创业创新·零知识证明
Nebula_g3 小时前
JavaSE高级:动态代理
java·开发语言·算法·javase