剑指offer-跳台阶

244 阅读1分钟

跳台阶 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]