【Leetcode 每日一题】70. 爬楼梯

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

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

示例 1:

复制代码
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 2:

复制代码
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶

提示:

  • 1 <= n <= 45

思考:

f(1)=1;

f(2)=2;

f(3)=3;

f(4)=5;

......

f(n)=f(n-1)+f(n-2);

想象有一个滑动窗口,包含三块,每增加一个n向前滑动一块,也就是将前两个块用后两个的值进行替换,之后计算前两个的和作为第三个块,然后输出。

考虑初始情况,将其设置成0,0,1

从1到n开始遍历循环,不断滑动窗口得到所需要求解的方法数量。

参考代码:

复制代码
class Solution {
public:
    int climbStairs(int n) {
        int a=0,b=0,c=1;
        for(int i = 1; i <= n; ++i) {
            a = b; 
            b = c; 
            c = a + b;
        }
        return c;

    }
};
相关推荐
小跌—18 小时前
Linux:进程信号理解
linux·c++·算法
liulilittle19 小时前
HTTP简易客户端实现
开发语言·网络·c++·网络协议·http·编程语言
微风扬!19 小时前
C++ Lambda 表达式完整指南
c++·lambda
CHANG_THE_WORLD19 小时前
C++ 并发编程指南 实现无锁队列
开发语言·c++·缓存·无锁队列·无锁编程
l12345sy19 小时前
Day22_【机器学习—集成学习(2)—Bagging—随机森林算法】
算法·机器学习·集成学习·bagging·随机森林算法
snowfoootball20 小时前
近期算法学习记录
学习·算法
今天也好累20 小时前
C++ 小游戏:拍桌子
c++·笔记·学习·算法
KyollBM20 小时前
【CF】Day139——杂题 (绝对值变换 | 异或 + 二分 | 随机数据 + 图论)
算法
CHANG_THE_WORLD20 小时前
C++ 内存模型:用生活中的例子理解并发编程
开发语言·c++·生活
纪元A梦20 小时前
贪心算法应用:交易费优化问题详解
算法·贪心算法