假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
样例
比如n=3,1+1+1=1+2=2+1=3,共有3种不同的方法
返回 3
这道题实际上有些迷惑人
仔细分析如果线条一节就会剩下 f(n-1)种答案
而先跳两节则有 f(n-2)个
总共为发f(n) = f( n - 1) + f(n - 2)即斐波那契
class Solution:
def climbStairs(self, n):
if n == 1:
return 1
if n == 0:
return 0
myl = [1,1]
for i in range(n -1 ):
x = myl[-1] + myl[-2]
myl.append(x)
return myl[-1]