这个其实是个递归的思路,因为每次可以爬一阶和两阶,爬n个台阶的楼梯的方法等于爬n-1个台阶的方法加上爬n-2个台阶的方法。当只有一个台阶的时候方法是1,当有两个台阶的时候方法是2,分别是一次爬两个台阶,和爬两个一阶。如果从n开始倒着递归可能会存在重复计算,所以可以从1开始计算一直计算到n,得到n阶台阶的方法数。
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
num = []
num.append(1)
num.append(2)
for i in range(2, n):
num.append(num[i - 1] + num[i - 2])
if n == 1:
return 1
else:
return num[-1]