递归解法(超时):
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];
}
};

本文探讨了经典的爬楼梯问题,首先通过递归方法解决,但由于效率问题,进一步优化为循环算法。展示了如何使用vector存储中间结果,避免重复计算,显著提升算法性能。
484

被折叠的 条评论
为什么被折叠?



