跳台阶 Leetcode 70
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?给定 n 是一个正整数。
思路
因为每次只能爬1或2步,
那么爬到第n层的方法要么是从第n-1层一步上来的,
要不就是从n-2层2步上来的,
所以递推公式: dp[n] = dp[n-1] + dp[n-2]
动态规划,斐波那契数列
class Solution(object):
def climbStairs(self, n):
if n <= 2:
return n
res = [0, 1, 2]
for i in range(3, n + 1):
res.append(res[-1] + res[-2])
return res[-1]