力扣70爬楼梯

70. 爬楼梯 - 力扣(LeetCode)

和打家劫舍一样的思路

1.看如何到最后一步的

①跨一级台阶到

②跨两级台阶到

则:f(x) = f(x-1) + f(x-2)

f(x)是爬到x阶的方案数量

2.考虑边界

台阶有0、1阶时只有一种方案;

f(2) = 2

f(3)= 3

...

本质斐波那契数列

这里用打家劫舍利一样用到的滚动数组

直接上代码:

java 复制代码
class Solution {
    public int climbStairs(int n) {
        int p = 0, q = 0, r = 1;
        for (int i = 1; i <= n; ++i) {
            p = q; 
            q = r; 
            r = p + q;
        }
        return r;
    }
}

p即为f(i-2),q即为f(i-1),r即为当前台阶f(i),到达当前台阶的方法数目

官方给的图多看看:70_fig1.gif (1080×480)

方便for循环直接一次性解决所有问题,像上面这样写就不用考虑前两个特殊情况了

或者这样也行:

java 复制代码
class Solution {
    public int climbStairs(int n) {
        int p = 1;
        int q = 1;
        int r = 2;

        if (n == 1 ){return 1;}
        if (n == 2 ){return 2;}

        for(int i = 3; i <= n; i ++){
            p = q;
            q = r;
            r = p + q;
        }
        return r;
    }
}

其实都是一样的,无非是向前或向后延长两个位置

相关推荐
人工智能培训1 小时前
具身智能环境交互与学习范式原理
大数据·linux·人工智能·学习·算法·机器学习
纪念 2292 小时前
C++算法(三)
开发语言·c++·算法
学不会pwn不改名2 小时前
时间复杂度与空间复杂度详解
算法
AbandonForce2 小时前
递归、搜索与回溯:从板书到二叉树解题方法
c++·算法·决策树
打工仔折腾 AI2 小时前
让时序预测真正参与决策:TimechoAI 工程化落地与管线设计实践
人工智能·后端·python·算法·机器学习·性能优化
Light602 小时前
企业自建 AI 智能体,成本差 8 倍还是 46 倍?
java·人工智能·算法·知识图谱·rag·ai agent 上下文·token 成本
曹牧3 小时前
VS: Visual Studio 里把未包含的文件加进项目2
linux·运维·算法
重生之小比特3 小时前
【算法拾光】滑动窗口|长度最小的子数组 + 无重复字符的最长子串
算法