动态规划

爬楼梯

简单#70Java时间 O(n)空间 O(1)

题目要做什么

每次可以爬 1 或 2 个台阶。给定正整数 n,求到达第 n 阶的不同走法数量。

题目示例输入n = 5
题目示例输出8

01 为什么这样做

到达第 i 阶的最后一步,只能来自第 i−1 阶或第 i−2 阶,因此 f(i) = f(i−1) + f(i−2)。用两个变量保存前两个状态。

始终成立的条件

每轮开始时,a = f(i−2),b = f(i−1)。

02 看见算法执行

动画与代码同步

修改输入,播放自己的例子

当前使用题目示例
修改输入会改变执行过程;预期输出用于核对结果。
数组 / nums步骤 1
执行状态
本次演示输出播放到最后查看

Solution.java参考解法
1class Solution {2    public int climbStairs(int n) {3        if (n <= 2) return n;4        int a = 1, b = 2;5        for (int i = 3; i <= n; i++) {6            int next = a + b;7            a = b;8            b = next;9        }10        return b;11    }12}

键盘控制:A 后退 · D 前进

编程练习

↑↓ 选择↵ 打开Pagefind 全文检索