
Leetcode|70. 爬楼梯【笔记】
发布日期:2021-05-24 01:21:25
浏览次数:25
分类:精选文章
本文共 1679 字,大约阅读时间需要 5 分钟。
Leetcode|70. 爬楼梯【笔记】
链接
前言
表示不会做,先标记一下,这题应该很多知识要补
自己想的有点眉目,但是不知道如何实现出来题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶
示例 2:
输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶
关键
关键在于斐波那契数列,也就是得发现f(n) = f(n-1) + f(n-2)
思路1
# 直接递归解法,容易超时,python可以加个缓存装饰器,这样也算是将递归转换成迭代的形式了# 除了这种方式,还有增加步长来递归,变相的减少了重复计算# 还有一种方法,在递归的同时,用数组记忆之前得到的结果,也是减少重复计算class Solution: @functools.lru_cache(100) # 缓存装饰器 def climbStairs(self, n: int) -> int: if n == 1: return 1 if n == 2: return 2 return self.climbStairs(n-1) + self.climbStairs(n-2)
- 缓存装饰器 functools.lru_cache(maxsize=128, typed=False)
- maxsize代表缓存的内存占用值,超过这个值之后,就的结果就会被释放,然后将新的计算结果进行缓存,其值应当设为2的幂
- typed若为True,则会把不同的参数类型得到的结果分开保存
- 递归:程序调用自身
思路2
# 直接DP,新建一个字典或者数组来存储以前的变量,空间复杂度O(n)class Solution: def climbStairs(self, n: int) -> int: dp = { } dp[1] = 1 dp[2] = 2 for i in range(3,n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n]
- {}表示字典
思路3?
# 还是DP,只不过是只存储前两个元素,减少了空间,空间复杂度O(1)class Solution: def climbStairs(self, n: int) -> int: if n==1 or n==2: return n a, b, temp = 1, 2, 0 for i in range(3,n+1): temp = a + b a = b b = temp return temp
思路4?
# 直接斐波那契数列的计算公式喽class Solution: def climbStairs(self, n: int) -> int: import math sqrt5=5**0.5 fibin=math.pow((1+sqrt5)/2,n+1)-math.pow((1-sqrt5)/2,n+1) return int(fibin/sqrt5)
相关知识
疑问
- 动态规划问题不太懂
- 递归解法得了解
- 斐波那契数列是啥
拓展
- 完全背包问题
参考
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年05月03日 09时14分29秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
带照片捕捉功能的ESP32-CAM PIR运动检测器
2019-03-15
如何使用SSH远程管理Linux服务器
2019-03-15
降级到旧版本macOS的3种方法
2019-03-15
学习Vue.js2.0(国外视频教程)
2019-03-15
wxPython和PyOpenGL视频
2019-03-15
在30分钟内学习PHP
2019-03-15
OpenStack 最小化安装配置(一):物理机网桥配置
2019-03-15
PS快速美白照片
2019-03-15
ubuntu 16.04 镜像下载
2019-03-15
CUDA9.1、cuDNN7在Ubuntu16.04上的安装
2019-03-15
微信小程序云开发:怎么删除云函数?已解决
2019-03-15
第一次被黑
2019-03-15
PyCharm配置anaconda环境
2019-03-15
SpringBoot与缓存(JSR-107、Spring缓存抽象)
2019-03-15
ERROR 总结
2019-03-15
查找最小值栈的O(1)
2019-03-15
Java面试题整理,闭关在家37天“吃透”这份345页PDF,纯干货
2019-03-15