Leetcode 70. 爬楼梯

一、题目

1、题目描述

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

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

2、接口描述

c++ 复制代码
    int climbStairs(int n) {
    }

3、原题链接

70.爬楼梯

二、解题报告

1、思路分析

我们定义一个数组f[46],中f1]示从第0阶爬到第i阶的方案数。于每次可以爬1或者2个台阶,所以对于第i阶楼梯来说,所以要么是从第i-1阶爬过来的,要么是从i-2阶爬过来的,如图所示:

于是得出一个递推公式: f[i]= fi-1] + fli-2]。

我们发现这个就是斐波那契数列,你可以叫它递推公式,也可以叫它状态转移方程。这里的

f1]就是状态的概念,从一个状态到另一个状态就叫状态转移。

当然我们还要考虑初始状态,f[0] 代表从第0阶到第0阶的方案数,当然就是1啦, f[1] 代表

从第0阶到第1阶的方案数,于只能走1阶,所以方案数也是1。

由于每个状态只与前两次状态有关,所以还可以滚动数组优化空间为O(1)

2、复杂度

时间复杂度 : O ( n ) 空间复杂度 O ( 1 ) 时间复杂度:O(n)\\ 空间复杂度O(1) 时间复杂度:O(n)空间复杂度O(1)

3、代码详解

c++ 复制代码
class Solution {
public:
    int climbStairs(int n) {
        long long f0 = 1 , f1 = 1;
        for(int i = 2 ; i <= n ; i++)
        {
            int tmp = f1;
            f1 = f0 + f1;
            f0 = tmp;
        }
        return f1;
    }
};
相关推荐
阿Y加油吧6 分钟前
算法二刷复盘:LeetCode 39 组合总和 & 22 括号生成(Java 回溯精讲)
java·算法·leetcode
WL_Aurora11 分钟前
每日一题——自然倍树
数据结构·python·算法·深度优先
水木流年追梦17 分钟前
CodeTop Top 300 热门题目3-字符串相加
java·前端·算法
澈20717 分钟前
内存四区模型详解(栈、堆、全局、常量)
c++·面试·职场和发展
一江寒逸21 分钟前
数据结构与算法之美:绪论——构建算法思维的基石
数据结构·算法
AC赳赳老秦21 分钟前
OpenClaw界面错乱、闪退问题,一键修复教程(附工具)
人工智能·python·职场和发展·django·tornado·deepseek·openclaw
可乐要加冰^-^26 分钟前
Vscode、Pycharm快速配置Claude、CodeX
数据结构·深度学习·算法·语言模型·自动驾驶
abant230 分钟前
leetcode 763 未来跳跃游戏
算法·leetcode·游戏
罗湖老棍子37 分钟前
A Horrible Poem(信息学奥赛一本通- P1460) [POI 2012] OKR-A Horrible Poem(洛谷-P3538)
算法·哈希·欧拉筛·错位重叠
帅次40 分钟前
Android 高级工程师面试参考答案:语言基础与并发
android·面试·职场和发展