leetcode(算法) 70.爬楼梯(python版)

需求

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶
    示例 2:
    输入:n = 3
    输出:3
    解释:有三种方法可以爬到楼顶。
  3. 1 阶 + 1 阶 + 1 阶
  4. 1 阶 + 2 阶
  5. 2 阶 + 1 阶

分析

创建了一个动态规划数组dp,其中dp[i]表示到达第i阶楼梯的方法数。
初始时,dp[0]和dp[1]分别为1(只有一种方式到达第1阶楼梯)和2(有两种方式到达第2阶楼梯)。
然后,对于更高阶的楼梯,其方法数等于前两阶楼梯的方法数之和。最后返回dp[n-1],即为到达楼顶的方法数。

代码

class Solution:
    """
    创建了一个动态规划数组dp,其中dp[i]表示到达第i阶楼梯的方法数。
    初始时,dp[0]和dp[1]分别为1(只有一种方式到达第1阶楼梯)和2(有两种方式到达第2阶楼梯)。
    然后,对于更高阶的楼梯,其方法数等于前两阶楼梯的方法数之和。最后返回dp[n-1],即为到达楼顶的方法数。
    """
    def climb_stairs(self,n):
        if n==1:
            return 1
        if n==2:
            return 2
        # dp 初始化一个长度为n的列表,其中所有元素都被设置为0。
        # dp = [0 for _ in range(n)] 是Python中创建列表的一种简洁写法,它初始化一个长度为n的列表,其中所有元素都被设置为0。
        # range(n):生成一个从0开始(默认)到n-1结束的整数序列。例如,如果n是3,则range(3)会生成序列[0, 1, 2]。
        # _:在Python中,单下划线 _ 通常用作临时变量名,表示我们并不关心这个变量的具体值。在这个上下文中,我们只是想对range(n)中的每个元素执行操作,但并不需要引用这些索引。
        # [0 for _ in range(n)]:这行代码创建了一个列表推导式,它遍历range(n)中的每个元素(即从0到n-1的所有整数),并将0作为对应位置的元素添加到新列表中。所以,当n=3时,这段代码将生成列表[0, 0, 0]。
        dp=[0 for temp in range(n)]
        dp[0]=1
        dp[1]=2
        for i in range(2,n):
            dp[i]=dp[i-1]+dp[i-2]
        return dp[-1]

if __name__ == '__main__':
    call=Solution()
    print(call.climb_stairs(2))
    print(call.climb_stairs(3))
    print(call.climb_stairs(4))

运行结果

在这里插入图片描述

相关推荐

  1. Leetcode Python70.楼梯

    2024-02-20 08:44:01       10 阅读
  2. LeetCode 70. 楼梯

    2024-02-20 08:44:01       45 阅读
  3. Leetcode 70 楼梯

    2024-02-20 08:44:01       39 阅读
  4. LeetCode70 楼梯

    2024-02-20 08:44:01       22 阅读
  5. LeetCode 70 楼梯

    2024-02-20 08:44:01       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-20 08:44:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-20 08:44:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-20 08:44:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-20 08:44:01       18 阅读

热门阅读

  1. GO框架基础 (二)、sqlx库

    2024-02-20 08:44:01       25 阅读
  2. Spring Boot整合Redis实现订单超时处理

    2024-02-20 08:44:01       24 阅读
  3. spring boot rabbitmq常用配置

    2024-02-20 08:44:01       27 阅读
  4. C 练习实例70-求字符串长度

    2024-02-20 08:44:01       24 阅读
  5. React 组件状态的使用

    2024-02-20 08:44:01       25 阅读
  6. 第五次作业

    2024-02-20 08:44:01       20 阅读
  7. 常用数据交换格式总结及各自特点

    2024-02-20 08:44:01       23 阅读
  8. c语言指针基础知识点

    2024-02-20 08:44:01       35 阅读
  9. SpringCloud--Ribbon解析

    2024-02-20 08:44:01       31 阅读
  10. spring boot配置Undertow服务器

    2024-02-20 08:44:01       29 阅读
  11. 使用Spring Boot整合Redis实现分布式锁

    2024-02-20 08:44:01       26 阅读