【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;

    }
};
相关推荐
我是李武涯28 分钟前
从`std::mutex`到`std::lock_guard`与`std::unique_lock`的演进之路
开发语言·c++
DashVector1 小时前
向量检索服务 DashVector产品计费
数据库·数据仓库·人工智能·算法·向量检索
AI纪元故事会1 小时前
【计算机视觉目标检测算法对比:R-CNN、YOLO与SSD全面解析】
人工智能·算法·目标检测·计算机视觉
夏鹏今天学习了吗1 小时前
【LeetCode热题100(59/100)】分割回文串
算法·leetcode·深度优先
卡提西亚1 小时前
C++笔记-10-循环语句
c++·笔记·算法
还是码字踏实1 小时前
基础数据结构之数组的双指针技巧之对撞指针(两端向中间):三数之和(LeetCode 15 中等题)
数据结构·算法·leetcode·双指针·对撞指针
亮剑20182 小时前
第1节:C语言初体验——环境、结构与基本数据类型
c++
William_wL_2 小时前
【C++】类和对象(下)
c++
William_wL_3 小时前
【C++】内存管理
c++
星星火柴9363 小时前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习