LeetCode 70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2

输出: 2

解释: 有两种方法可以爬到楼顶。

1. 1 阶 + 1 阶

2. 2 阶

示例 2:

输入: 3

输出: 3

解释: 有三种方法可以爬到楼顶。

1. 1 阶 + 1 阶 + 1 阶

2. 1 阶 + 2 阶

3. 2 阶 + 1 阶

思路:

  1. 定义数组元素的含义:dp[i],达到i阶的方法数

  2. 找出数组元素之间的关系式:dp[i] = dp[i-1] + dp[i-2]

  3. 给定初始值:dp[1] = 1 dp[2] = 2

1 2 3 4 5
1 2 3 5 8

def climbStairs(self, n) -> int:

        dp = [0] * (n+1)

        if n == 1:

            return 1

        if n == 2:

            return 2

        dp[1] = 1

        dp[2] = 2

        for i in range(3, n+1):

            dp[i] = dp[i-1] + dp[i-2]

        return dp[i]

# 测试用例

solution = Solution()

solution.climbStairs(5)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。