c++
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;
}
};
class Solution {
public:
int climbStairs(int n) {
// state: dp[i]表示爬i阶楼梯的方法数
// basecase: dp[1]=1, dp[2]=2, dp[i]初始化为1
// transfer: dp[i] = dp[i-1] + dp[i-2]
// result: dp[n]
if (n == 1) {
return 1;
}
vector<int> dp(n+1, 1);
dp[2] = 2;
for (int i = 3; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
};