70. 爬楼梯

class Solution {
    public int climbStairs(int n) {
        // 使用三个变量进行状态转移:
        // p 表示到达前两个台阶的方法数
        // q 表示到达前一个台阶的方法数
        // r 表示当前台阶的方法数
        int p = 0, q = 0, r = 1;
        
        // 遍历从第1阶到第n阶
        for (int i = 1; i <= n; ++i) {
            // 状态转移:更新前两个台阶的状态(p = 上一步的q)
            p = q; 
            // 更新前一个台阶的状态(q = 上一步的r)
            q = r; 
            // 计算当前台阶的方法数:当前台阶 = 跨一步(前一个台阶的方法数)+ 跨两步(前两个台阶的方法数)
            r = p + q;
        }
        // 返回到达第n阶台阶的总方法数
        return r;
    }
}
posted @ 2025-05-30 18:22  星星永远发着光  阅读(8)  评论(0)    收藏  举报