动态规划。
将问题分解为子问题: 爬到第n层的总方法f(n) = 爬到第n-1层的总方法f(n-1) + 爬到第n-2层的总方法f(n-2)。
边界条件: n=1和n=2时。
遍历层数,每次只用三个变量分别保存f(n-2)、f(n-1)、f(n),在遍历过程中更新。
python
class Solution:
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n==0 or n==1 or n==2:
return n
a = 1
b = 2
total = 0
for i in range(2,n):
total = a+b
a = b
b = total
return total