力扣由浅至深 每日一题.14 爬楼梯

因为困难多丧志,不叫红尘惑坚心

------ 24.3.25

爬楼梯

提示

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 12 个台阶。你有多少种不同的方法可以爬到楼顶呢?

动态规划

思路和算法

在只有第一层和第二层楼梯时,上楼的方案我们已知,当n>=3时,采用斐波那契数列,f(n)=f(n-1)+f(n-2)

所以对n进行判断,可以直接解得题目

青蛙跳台问题与斐波那契数列问题的区别在于起始值不同:

青蛙跳台阶问题: f(0)=1 , f(1)=1 , f(2)=2 。

斐波那契数列问题: f(0)=0 , f(1)=1 ,f(2)=1 。

若新建长度为 n 的 dp 列表,则空间复杂度为 O(N)。

由于 dp 列表第 i 项只与第 i−1 和第 i−2 项有关,因此只需要初始化三个整形变量 sum, a, b ,利用辅助变量 sum 使 a,b 两数字交替前进即可 (具体实现见代码) 。由于省去了 dp 列表空间,因此空间复杂度降至 O(1)。

java 复制代码
class Solution {
    public int climbStairs(int n) {
        int a = 1, b = 1, sum;  //初始值
        for(int i = 0; i < n - 1; i++){    //循环进行遍历
            sum = a + b;    //第三层等于前两层之和
            a = b;      //第一层等于第二层
            b = sum;    //第二层等于原先第一层与第二层之和
        }
        return b;
    }
}
相关推荐
格林威9 分钟前
多相机重叠视场目标关联:解决ID跳变与重复计数的 8 个核心策略,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·分类·工业相机
郝学胜-神的一滴10 分钟前
深入理解网络分层模型:数据封包与解包全解析
linux·开发语言·网络·程序人生·算法
永远都不秃头的程序员(互关)10 分钟前
【K-Means深度探索(九)】K-Means与数据预处理:特征缩放与降维的重要性!
算法·机器学习·kmeans
源代码•宸16 分钟前
Golang原理剖析(逃逸分析)
经验分享·后端·算法·面试·golang··内存逃逸
重生之后端学习22 分钟前
25. K 个一组翻转链表
java·数据结构·算法·leetcode·职场和发展
CoderCodingNo29 分钟前
【GESP】C++五级练习题 luogu-P2242 公路维修问题
开发语言·c++·算法
零售ERP菜鸟36 分钟前
IT年度商业计划书框架(精简版)
大数据·人工智能·职场和发展·创业创新·学习方法·业界资讯
不知名XL36 分钟前
day30 动态规划03
算法·动态规划
张祥64228890437 分钟前
线性代数本质笔记十二
人工智能·算法·机器学习
程序员-King.37 分钟前
day157—回溯—括号生成(LeetCode-22)
算法·leetcode·回溯