思路:到第n个阶梯有f(n)中方式,又由于每次只能走1或者2步,所以f(n) = f(n-1) + f(n-2),则就是斐波那契数列,最简单的实现就是O(n)。
code:
class Solution {
public:
int climbStairs(int n) {
if(n<=1)return 1;
int ret=2, temp1=1, temp2 = 2;
for(int i = 3;i<=n;i++){
ret = temp1 + temp2;
temp1 = temp2;
temp2 = ret;
}
return ret;
}
};