Skip to content

Commit

Permalink
update content
Browse files Browse the repository at this point in the history
  • Loading branch information
labuladong committed Jul 2, 2024
1 parent f0a7873 commit f9f11d5
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
2 changes: 1 addition & 1 deletion 动态规划系列/动态规划详解进阶.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@


这篇文章是我们公众号半年前一篇 200 多赞赏的成名之作 [动态规划详解](https://mp.weixin.qq.com/s/1V3aHVonWBEXlNUvK3S28w) 的进阶版。由于账号迁移的原因,旧文无法被搜索到,所以我润色了本文,并添加了更多干货内容,希望本文成为解决动态规划的一部「指导方针」。
这篇文章是我的公众号多年前一篇 200 多赞赏的成名之作 [动态规划详解](https://mp.weixin.qq.com/s/1V3aHVonWBEXlNUvK3S28w) 的进阶版,我润色了本文,并添加了更多干货内容,希望本文成为解决动态规划的一部「指导方针」。

动态规划问题(Dynamic Programming)应该是很多读者头疼的,不过这类问题也是最具有技巧性,最有意思的。本书使用了整整一个章节专门来写这个算法,动态规划的重要性也可见一斑。

Expand Down
12 changes: 11 additions & 1 deletion 算法思维系列/滑动窗口技巧进阶.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,17 @@ while (right < nums.size()) {

反观嵌套 for 循环的暴力解法,那个 `j` 会回退,所以某些元素会进入和离开窗口多次,所以时间复杂度就是 `O(N^2)` 了。

我在 [算法时空复杂度分析实用指南](https://labuladong.online/algo/essential-technique/complexity-analysis/) 有教大家如何从理论上估算时间空间复杂度,这里就不展开了。
我在 [算法时空复杂度分析实用指南](https://labuladong.online/algo/essential-technique/complexity-analysis/) 有具体教大家如何从理论上估算时间空间复杂度,这里就不展开了。

:::

::: info 为啥滑动窗口能在 `O(N)` 的时间穷举子数组?

这个问题本身就是错误的,**滑动窗口并不能穷举出所有子串**。要想穷举出所有子串,必须用那个嵌套 for 循环。

然而对于某些题目,并不需要穷举所有子串,就能找到题目想要的答案。滑动窗口就是这种场景下的一套算法模板,帮你对穷举过程进行剪枝优化,避免冗余计算。

所以在 [算法的本质](https://labuladong.online/algo/essential-technique/algorithm-summary/) 中我把滑动窗口算法归为「如何聪明地穷举」一类。

:::

Expand Down

0 comments on commit f9f11d5

Please sign in to comment.