Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ou.cs
Fucking Algorithm
提交
abbfe39f
F
Fucking Algorithm
项目概览
ou.cs
/
Fucking Algorithm
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Fucking Algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
abbfe39f
编写于
3月 13, 2023
作者:
L
labuladong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update content
上级
9ad94cc0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
3 addition
and
2 deletion
+3
-2
动态规划系列/动态规划详解进阶.md
动态规划系列/动态规划详解进阶.md
+2
-2
动态规划系列/状态压缩技巧.md
动态规划系列/状态压缩技巧.md
+1
-0
未找到文件。
动态规划系列/动态规划详解进阶.md
浏览文件 @
abbfe39f
...
...
@@ -198,7 +198,7 @@ int fib(int N) {
这个例子的最后,讲一个细节优化。
细心的读者会发现,根据斐波那契数列的状态转移方程,当前状态
只和之前的
两个状态有关,其实并不需要那么长的一个 DP table 来存储所有的状态,只要想办法存储之前的两个状态就行了。
细心的读者会发现,根据斐波那契数列的状态转移方程,当前状态
`n`
只和之前的
`n-1, n-2`
两个状态有关,其实并不需要那么长的一个 DP table 来存储所有的状态,只要想办法存储之前的两个状态就行了。
所以,可以进一步优化,把空间复杂度降为 O(1)。这也就是我们最常见的计算斐波那契数的算法:
...
...
@@ -224,7 +224,7 @@ int fib(int n) {
这一般是动态规划问题的最后一步优化,如果我们发现每次状态转移只需要 DP table 中的一部分,那么可以尝试缩小 DP table 的大小,只记录必要的数据,从而降低空间复杂度。
上述例子就相当于把
DP table 的大小从
`n`
缩小到 2。后续的动态规划章节中我们还会看到这样的例子,一般来说是
把一个二维的 DP table 压缩成一维,即把空间复杂度从 O(n^2) 压缩到 O(n)。
上述例子就相当于把
DP table 的大小从
`n`
缩小到 2。我会在后文
[
对动态规划发动降维打击
](
https://labuladong.github.io/article/fname.html?fname=状态压缩技巧
)
进一步讲解这个压缩空间复杂度的技巧,一般来说用来
把一个二维的 DP table 压缩成一维,即把空间复杂度从 O(n^2) 压缩到 O(n)。
有人会问,动态规划的另一个重要特性「最优子结构」,怎么没有涉及?下面会涉及。斐波那契数列的例子严格来说不算动态规划,因为没有涉及求最值,以上旨在说明重叠子问题的消除方法,演示得到最优解法逐步求精的过程。下面,看第二个例子,凑零钱问题。
...
...
动态规划系列/状态压缩技巧.md
浏览文件 @
abbfe39f
...
...
@@ -233,6 +233,7 @@ int longestPalindromeSubseq(string s) {
-
[
一个方法团灭 LeetCode 股票买卖问题
](
https://labuladong.github.io/article/fname.html?fname=团灭股票问题
)
-
[
动态规划之最小路径和
](
https://labuladong.github.io/article/fname.html?fname=最小路径和
)
-
[
动态规划解题套路框架
](
https://labuladong.github.io/article/fname.html?fname=动态规划详解进阶
)
-
[
动态规划设计:最大子数组
](
https://labuladong.github.io/article/fname.html?fname=最大子数组
)
-
[
我的刷题心得
](
https://labuladong.github.io/article/fname.html?fname=算法心得
)
-
[
经典动态规划:子集背包问题
](
https://labuladong.github.io/article/fname.html?fname=背包子集
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录