要想到达当前楼梯,可以从n-1和n-2时的楼梯得到
首先,定义最初状态
然后,递推先前状态
最后,剩下的交给代码
超时
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
memo = [-1] * (n+1)
if n <= 2:
return n
if memo[n] != -1:
return memo[n]
memo[n] = self.climbStairs(n - 1) + self.climbStairs(n - 2)
return memo[n]
不超时:考虑不要用函数,直接用值存
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 2:
return n
dp_2 = 1 # 这里表示dp-2
dp_1 = 2
for i in range(3, n + 1):
res = dp_2 + dp_1
dp_2 = dp_1
dp_1 = res
i = i + 1
return dp_1