问题说明:
设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
答案:
方法一,动态规划,通过列表记录n阶方法数(执行36ms)
class Solution: def climbStairs(self, n: int) -> int: a=[1,2] if n<=2: return a[n-1] while len(s)<n: a.append(s[-1]+s[-2]) return a[-1]
方法二,递归调用(执行超时,加入装饰件解决:@lru_cache(None),执行时间:36ms)
def climbStairs(self, n: int) -> int:
# @lru_cache(None) if n == 0 or n == 1: return 1 return self.climbStairs(n - 1) + self.climbStairs(n - 2)
说明:
其中 @lru_cache(None) 表示
若某参数n为第一次调用climbStairs方法,则执行并将结果放入缓存;
若参数n不是第一次调用climbStairs方法,则直接从缓存中调取结果,以节省时间;
参考链接:https://leetcode.cn/problems/climbing-stairs/solutions/1686970/python3-by-luke2022-5yrd/
方法三(执行28ms)
class Solution: def climbStairs(self, n: int) -> int: a=b=1 for i in range(2,n+1): a,b=b,a+b return b
分类:
leetcode练习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统