首页 > 编程语言 >LeetCode Top100: 爬楼梯 (python)

LeetCode Top100: 爬楼梯 (python)

时间:2023-04-16 23:34:44浏览次数:35  
标签:楼顶 爬楼梯 示例 python 方法 台阶 Top100 LeetCode dp

 

假设你正在爬楼梯。需要 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 阶

 

提示:

  • 1 <= n <= 45

 

实现思路:

这道题可以使用动态规划算法来解决,具体思路如下:

假设 dp[i] 表示爬到第 i 级台阶的不同方法数,那么 dp[i] 的值可以由以下两种情况转移得到:

  1. 在第 (i-1) 级台阶再爬 1 级,此时的不同方法数为 dp[i-1];
  2. 在第 (i-2) 级台阶再爬 2 级,此时的不同方法数为 dp[i-2]。

因此,dp[i] 的值为 dp[i-1] + dp[i-2]。

初始状态 dp[1] = 1,dp[2] = 2。

最终结果为 dp[n]。

下面是 Python 代码实现:

class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 1:
            return 1
        dp = [0] * (n + 1)
        dp[1] = 1
        dp[2] = 2
        for i in range(3, n + 1):
            dp[i] = dp[i-1] + dp[i-2]
        return dp[n]

  

 

标签:楼顶,爬楼梯,示例,python,方法,台阶,Top100,LeetCode,dp
From: https://www.cnblogs.com/huadongw/p/17324418.html

相关文章

  • Python Numpy Tutorial
    pythonPython是一种高层次的,动态类型多范型编程语言。Python代码是经常被认为是几乎像伪代码,因为它可以让你同时是非常可读表达的代码非常少的线很强大的想法。作为一个例子,这里是在Python经典的快速排序算法的实现:defquicksort(arr):iflen(arr)<=1:returnarr......
  • leetcode160-相交链表
    leetcode160方法一:哈希表思路:先创建一个unordered_set,存放ListNode*类型的变量先遍历其中一个链表,把所有节点的指针放在set中再遍历另一个链表,查找是否存在一个节点已经在set中,如果存在则说明这是它们的相交节点的指针,返回这个指针,如果不存在则说明不存在相交节点,......
  • LeetCode-Top100: 有效的括号 (python)
     给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 示例1:输入:s="()"输出:true示例 2:输入:s="()[]{}"输......
  • NumPy 秘籍中文第二版:一、使用 IPython
    在本章中,我们将介绍以下秘籍:安装IPython使用IPython作为Shell阅读手册页安装matplotlib运行IPython笔记本导出IPython笔记本导入网络笔记本配置笔记本服务器探索SymPy配置文件简介IPython,可从ipython.org获得,是一个免费的开源项目,可用于Linux,Unix,MacOSX,和Windows......
  • Python 智能项目:1~5
    原文:IntelligentProjectsUsingPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c一、人工智能系统的基础人工智能(AI)在过去几年中一直......
  • Python 元学习实用指南:1~5
    原文:Hands-OnMetaLearningwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c一、元学习导论元学习是当前人工智能领域最有前途和......
  • python stata交互
    python和python:有所区别:python(不带冒号)遇到错误会保留在Python环境。python:(带冒号)遇到错误时会回到Stata环境。Python部分的代码写完之后,输入end退出Python环境。但输入end只是退出Python环境,Python环境并没有清除,下次输入python或者python:时会保......
  • Python 元学习实用指南:6~10
    原文:Hands-OnMetaLearningwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c六、MAML及其变体在上一章中,我们了解了神经图灵机(N......
  • Python 强化学习实用指南:1~5
    原文:Hands-OnReinforcementLearningwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c一、强化学习导论强化学习(RL)是机器学习的......
  • Python 强化学习实用指南:11~14
    原文:Hands-OnReinforcementLearningwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c十一、策略梯度和优化在最后三章中,我们学......