Leetcode刷题Python70. 爬楼梯

Posted Better Bench

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题Python70. 爬楼梯相关的知识,希望对你有一定的参考价值。

1 题目

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

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

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶

示例 2:

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。

  1. 1 阶 + 1 阶 + 1 阶
  2. 1 阶 + 2 阶
  3. 2 阶 + 1 阶

2 解析

我们用 f(x) 表示爬到第 x 级台阶的方案数,考虑最后一步可能跨了一级台阶,也可能跨了两级台阶,所以我们可以列出如下式子:
f(x)=f(x−1)+f(x−2)
它意味着爬到第 x 级台阶的方案数是爬到第 x−1 级台阶的方案数和爬到第 x−2 级台阶的方案数的和。很好理解,因为每次只能爬 1 级或2 级,所以 f(x) 只能从 f(x−1) 和 f(x−2) 转移过来,而这里要统计方案总数,我们就需要对这两项的贡献求和。

3 python实现

class Solution:
    def climbStairs(self, n: int) -> int:

        dp = [1,1]
        for i in range(2,n+1):
            dp.append(dp[i-1]+dp[i-2])
        return dp[n]

以上是关于Leetcode刷题Python70. 爬楼梯的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—70. 爬楼梯(动态规划)—day76

LeetCode刷题笔记-动态规划-day2

LeetCode刷题笔记-动态规划-day2

LeetCode刷题笔记-动态规划-day2

LeetCode70.爬楼梯

[LeetCode] 70. 爬楼梯