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

浙公网安备 33010602011771号