class Solution:
"""
@param n: An integer
@return: An integer
"""
def climbStairs(self, n):
# write your code here
# n 1 2 3 4 5
# r 1 2 3 5 8
# 递归 超时 70% 39
# if n == 1:
# return 1
# if n == 2:
# return 2
# return self.climbStairs(n - 1) + self.climbStairs(n - 2)
# 迭代
# a, b = 1, 2
# for i in range(1, n):
# a, b = b, a + b
# return a
# 动态规划
dp = [0]*(n + 1)
if n == 0 or n == 1:
return 1
dp[1], dp[2] = 1, 2
for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
# print(i)
# print(dp[i - 1])
return dp[n]
刚开始用动态规划时开的数组是n 导致循环时一直越界,一直在改range和return中的n, 结果就是一直错,后来才改的数组大小。