额,感觉这是一道水题,明显可知递推公式是vec[i] = vec[i - 2] + vec[i - 1],当然此时楼梯的级数必然大于2,至少级数为1或2的两种情况直接例外处理就好了,除此之外没有什么麻烦的地方。
class Solution {
public:
int climbStairs(int n) {
if (n == 1)
return 1;
if (n == 2)
return 2;
vector<int> vec(n, 1);
vec[1] = 2;
for (int i = 2; i < n; i++) {
vec[i] = vec[i - 2] + vec[i - 1];
}
return vec[n - 1];
}
};