class Solution {
public:
int climbStairs(int n) {
vector<int> f(n+1);
f[0] = 1;f[1] = 1;
for(int i=2;i<=n;i++){
f[i] = f[i-1]+f[i-2];
}
return f[n];
}
};
记忆化搜索:
保存中间结果,避免冗余搜索。
class Solution {
public:
vector<int> f;
int climbStairs(int n) {
f.resize(n+1,0);
return dfs(n);;
}
int dfs(int n){
if(n==0 || n==1){
return 1;
}
if(f[n]){
return f[n];
}
return f[n] = dfs(n-1)+dfs(n-2);
}
};