文巾解题 70. 爬楼梯

Posted UQI-LIUWJ

tags:

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

1 题目描述

2 解题思路

动态规划:

假设现在还有n阶台阶,那么我可以向下迈一步,然后子问题就变成了计算n-1阶台阶的步数;我们也可以向下迈两步,然后子问题就变成了计算n-2阶台阶的步数

顺着这个思路,我们有(注意:这种方法会超时!所以不是最终代码)

class Solution:
    def climbStairs(self, n: int) -> int:
        if(n==1):
            return 1
        elif(n==2):
            return 2
        else:
            return self.climbStairs(n-1)+self.climbStairs(n-2)

 超时的原因是,我们会反复调用一些climbStairs的函数

为了解决超时问题,我们设置一个数组,来记录climbStairs(x)的值

class Solution:
    def climbStairs(self, n: int) -> int:
        lst=[]
        for i in range(n+1):
            lst.append(0)
        def f(n):
            if(lst[n]!=0):
                return lst[n]
            elif(n==1):
                lst[n]=1
                return 1
            elif(n==2):
                lst[n]=2
                return 2
            else:
                lst[n]=f(n-1)+f(n-2)
                return(lst[n])
        return f(n)

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

[LeetCode] 70. Climbing Stairs 爬楼梯

LeetCode(算法)- 70. 爬楼梯

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

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

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

[LeetCode] 70. 爬楼梯