#Method1:动态规划
##当有n个台阶时,可供选择的走法可以分两类:
###1,先跨一阶再跨完剩下n-1阶;
###2,先跨2阶再跨完剩下n-2阶。
###所以n阶的不同走法的数目是n-1阶和n-2阶的走法数的和
class Solution(object):
def climbStairs(self, n):
if n==1 or n==2 or n==0:
return n
steps=[1,1]
for i in xrange(2,n+1):
steps.append(steps[i-1]+steps[i-2])
return steps[n]
#Method2:找规律
###当输入为1, 2, 3, 4, 5, 6, 7, 8, 9, 10时,
###观察输出为1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
###斐波那契数列
class Solution(object):
def climbStairs(self,n):
pre=cur=1
for i in xrange(1,n):
pre,cur=cur,cur+pre
return cur