当前位置: 首页 > 后端技术 > Python

爬楼梯(Python3)

时间:2023-03-26 00:55:03 Python

假设你正在爬楼梯。需要走n步才能到达建筑物的顶部。您一次可以爬1或2个台阶。您可以通过多少种不同的方式到达建筑物的顶部?注:给定的n为正整数。示例1:输入:2输出:2解释:有两种方法可以到达建筑物的顶部。1st-order+1st-order和2nd-order的解题思路:实现了两种方法,但是第一种超过了时间限制(?ì_í?),因为该方法在递归的时候实际上计算了两次。这两种方法都使用了动态规划思想。比如爬10级楼梯,最后一步爬到第10级只会有两种情况。一种是从9阶爬1阶,一种是从8阶爬。爬两级台阶。因此,10步问题可以分解为爬第9步和第8步两个子问题,一直递归划分,直到只剩下第2步(2种方法)和第1步(一种方法)。超过时间限制的代码:classSolution:defclimbStairs(self,n:int)->int:ifn<=2:ifn==2:return2else:return1else:returnself.climbStairs(n-1)+self.climbStairs(n-2)第二种方法(不重复计算):classSolution:defclimbStairs(self,n:int)->int:m=[0,1,2]foriinrange(3、n+1):m.append(m[i-1]+m[i-2])returnm[n]时空复杂度如下:来源:LeetCode链接:https://leetcode-cn.com/probl...