leetcode 70. 爬楼梯

题目

解题思路

  1. 状态转移方程

    • dp[i] 表示到达第 i 阶台阶的方法数。
    • 则有 dp[i] = dp[i-1] + dp[i-2],因为到达第 i 阶台阶可以从第 i-1 阶或第 i-2 阶台阶爬上来。
  2. 边界条件

    • dp[1] = 1,表示到达第1阶台阶只有1种方法。
    • dp[2] = 2,表示到达第2阶台阶有2种方法(1+1 或 2)。
  3. 优化空间复杂度

    • 由于 dp[i] 只依赖于 dp[i-1]dp[i-2],因此不需要存储整个数组,只需要记录最后两个值即可。

代码实现

class Solution {
public:
    int climbStairs(int n) {
        if (n <= 2) return n;
        
        int a = 1, b = 2, c;
        for (int i = 3; i <= n; ++i) {
            c = a + b;
            a = b;
            b = c;
        }
        return c;
    }
};

注意事项

  1. 边界条件处理

    • n 小于等于 2 时,直接返回 n,因为此时只有一种或两种方法。
  2. 变量初始化

    • 初始化 ab 分别为 1 和 2,分别代表到达第1阶和第2阶的方法数。
  3. 循环控制

    • 循环从 3 开始到 n,确保覆盖所有可能的台阶数。
posted @   zh&wy  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示