1.题目
假设你正在爬楼梯。需要
n
阶你才能到达楼顶。每次你可以爬
1
或2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
2.收获
(1)可以利用滚动数组思想(类似于斐波拉契)
(2)每次只能爬1阶或2阶,则有f(x)=f(x-1)+f(x-2)。可通过列举法发现其与斐波拉契数列的关系——0阶有1种方法,1阶有1种,2阶有2种,3阶有3种,4阶有5种
(3)Python语言更简洁,需要多多熟练
3.解答
(1)c++版
class Solution{
public:
int climbStairs(int n){
int p=0,q=0,r=1;
for(int i=0;i<=n;i++){
p=q;
q=r;
r=p+q;
}
}
return r;
};
(2)Python版
class Solution:
def climbStairs(self,n:int)->int:
a,b=1,1
for _ in range(n-1):
a,b=b,a+b
return b