代码随想录算法训练营第三十八天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

509. 斐波那契数

题解:
java 复制代码
class Solution {
    //非状态压缩
    //dp数组含义:代表斐波那契数列元素
    public int fib(int n) {
        //该数列由0、1开始
        if(n <= 1){
            return n;
        }
        int[] dp = new int[n + 1];
        dp[0] = 0;
        dp[1] = 1;
        for(int index = 2; index <= n; index++){
            dp[index] = dp[index - 1] + dp[index - 2];
        }
        return dp[n];
    }
}

70. 爬楼梯

题解:
java 复制代码
class Solution {
    //等同于斐波那契数列
    //dp数组元素代表:爬到当前楼层的方法种数
    public int climbStairs(int n) {
        int[] dp = new int[n + 1];
        //初始化0层也为1
        dp[0] = 1;
        //爬到1层只有1种方式
        dp[1] = 1;
        for(int i = 2; i <= n; i++){
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n];
    }
}

746. 使用最小花费爬楼梯

题解:
java 复制代码
class Solution {
    //dp数组代表爬到当前楼层的最小花费
    //tips:第一步不支付费用
    public int minCostClimbingStairs(int[] cost) {
        int len = cost.length;
        int[] dp = new int[len + 1];
        //从下标0或者1开始,故费用均为0
        dp[0] = 0;
        dp[1] = 0;
        //计算
        for(int i = 2; i <= len; i++){
            dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
        }
        return dp[len];
    }
}
相关推荐
CHENFU_JAVA8 分钟前
EasyExcel 合并单元格最佳实践:基于注解的自动合并与样式控制
java·excel
NAGNIP35 分钟前
LLaMA 3:离 AGI 更近一步?
算法
PineappleCoder1 小时前
力扣【2348. 全0子数组的数目】——从暴力到最优的思考过程
前端·javascript·算法
华仔啊1 小时前
3行注解干掉30行日志代码!Spring AOP实战全程复盘
java·spring boot·后端
Fireworkitte1 小时前
Tomcat 的核心脚本catalina.sh 和 startup.sh的关系
java·tomcat
风吹落叶32571 小时前
深入解析JVM内存管理与垃圾回收机制
java·开发语言·jvm
叶~璃1 小时前
人工智能驱动的开发变革
java
_poplar_2 小时前
08.5【C++ 初阶】实现一个相对完整的日期类--附带源码
c语言·开发语言·数据结构·c++·vscode·算法·vim
悟能不能悟2 小时前
排查Redis数据倾斜引发的性能瓶颈
java·数据库·redis
Derek_Smart2 小时前
Java线程死亡螺旋:解析与预防策略
java·spring·性能优化