代码随想录算法训练营第三十八天|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];
    }
}
相关推荐
剑挑星河月2 小时前
763.划分字母区间
数据结构·算法·leetcode
菠萝地亚狂想曲2 小时前
Zephyr_01, environment
android·java·javascript
Arya_aa2 小时前
HTTP与Tmocat服务器与SpringMVC
java·spring boot
YDS8292 小时前
大营销平台 —— 抽奖规则决策树
java·springboot·ddd
小辉同志2 小时前
74. 搜索二维矩阵
c++·leetcode·矩阵·二分查找
programhelp_2 小时前
Snowflake OA 2026 面经|3道高频真题拆解 + 速通攻略
经验分享·算法·面试·职场和发展
圣保罗的大教堂2 小时前
leetcode 3740. 三个相等元素之间的最小距离 I 简单
leetcode
Duang2 小时前
AI 真能自己写出整个 Windows 系统吗?我做了一场无监督实验
算法·设计模式·架构
酿情师2 小时前
Shiro 反序列化漏洞原理(小白零基础详解)
java·web安全·网络安全
少许极端2 小时前
算法奇妙屋(四十五)-CCPC备战之旅-1
java·开发语言·算法