递归解法(超时):
class Solution {
public:
int climbStairs(int n) {
if(n == 1) return 1;
if(n == 2) return 2;
return climbStairs(n-1) + climbStairs(n-2);
}
};
递归改循环(AC):
class Solution {
public:
int climbStairs(int n) {
vector <int> fabonacci;
for (int i = 1; i <= n; i++){
if (i == 1) fabonacci.push_back(1);
else if (i == 2) fabonacci.push_back(2);
else fabonacci.push_back(fabonacci[i-2] + fabonacci[i-3]);
}
return fabonacci[n-1];
}
};