题目描述
假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,爬到顶部的方法有多少种?
思路
一个简单的斐波拉契数列的题目。主要难点在于理解题目,考虑第n级楼梯,由于题目要求,只能走两级或者一级,所以,到达第n级楼梯,一共两种方式,在第n-1级走一级,或者在第n-2级走2级,即f(n) = f(n-1) + f(n-2)。
C++代码
class Solution {
public:
/**
* @param n: An integer
* @return: An integer
*/
int climbStairs(int n) {
// write your code here
if (n == 0 || n == 1 || n == 2) {
return n;
} else {
std::vector<int> tempVec = {1, 2};
for (int i = 2; i < n; ++i) {
tempVec.push_back(tempVec[i - 1] + tempVec[i - 2]);
}
return tempVec[n-1];
}
}
};