Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6da4603

Browse files
update content
1 parent 73d5818 commit 6da4603

File tree

68 files changed

+772
-772
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+772
-772
lines changed

‎README.md

Lines changed: 170 additions & 170 deletions
Large diffs are not rendered by default.

‎动态规划系列/LCS.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
不知道大家做算法题有什么感觉,**我总结出来做算法题的技巧就是,把大的问题细化到一个点,先研究在这个小的点上如何解决问题,然后再通过递归/迭代的方式扩展到整个问题**
2828

29-
比如说我们前文 [手把手带你刷二叉树第三期](https://labuladong.github.io/article/fname.html?fname=二叉树系列3),解决二叉树的题目,我们就会把整个问题细化到某一个节点上,想象自己站在某个节点上,需要做什么,然后套二叉树递归框架就行了。
29+
比如说我们前文 [手把手带你刷二叉树第三期](https://labuladong.online/algo/fname.html?fname=二叉树系列3),解决二叉树的题目,我们就会把整个问题细化到某一个节点上,想象自己站在某个节点上,需要做什么,然后套二叉树递归框架就行了。
3030

3131
动态规划系列问题也是一样,尤其是子序列相关的问题。**本文从「最长公共子序列问题」展开,总结三道子序列问题**,解这道题仔细讲讲这种子序列问题的套路,你就能感受到这种思维方式了。
3232

@@ -47,16 +47,16 @@ int longestCommonSubsequence(String s1, String s2);
4747

4848
显然,这种思路的复杂度非常高,你要穷举出所有子序列,这个复杂度就是指数级的,肯定不实际。
4949

50-
正确的思路是不要考虑整个字符串,而是细化到 `s1``s2` 的每个字符。前文 [子序列解题模板](https://labuladong.github.io/article/fname.html?fname=子序列问题模板) 中总结的一个规律:
50+
正确的思路是不要考虑整个字符串,而是细化到 `s1``s2` 的每个字符。前文 [子序列解题模板](https://labuladong.online/algo/fname.html?fname=子序列问题模板) 中总结的一个规律:
5151

5252

5353

5454
<hr>
5555
<details class="hint-container details">
5656
<summary><strong>引用本文的文章</strong></summary>
5757

58-
- [动态规划之子序列问题解题模板](https://labuladong.github.io/article/fname.html?fname=子序列问题模板)
59-
- [经典动态规划:编辑距离](https://labuladong.github.io/article/fname.html?fname=编辑距离)
58+
- [动态规划之子序列问题解题模板](https://labuladong.online/algo/fname.html?fname=子序列问题模板)
59+
- [经典动态规划:编辑距离](https://labuladong.online/algo/fname.html?fname=编辑距离)
6060

6161
</details><hr>
6262

@@ -67,7 +67,7 @@ int longestCommonSubsequence(String s1, String s2);
6767
<details class="hint-container details">
6868
<summary><strong>引用本文的题目</strong></summary>
6969

70-
<strong>安装 [我的 Chrome 刷题插件](https://labuladong.github.io/article/fname.html?fname=chrome插件简介) 点开下列题目可直接查看解题思路:</strong>
70+
<strong>安装 [我的 Chrome 刷题插件](https://labuladong.online/algo/intro/chrome/) 点开下列题目可直接查看解题思路:</strong>
7171

7272
| LeetCode | 力扣 |
7373
| :----: | :----: |
@@ -81,6 +81,6 @@ int longestCommonSubsequence(String s1, String s2);
8181

8282
**_____________**
8383

84-
本文为会员内容,请扫码关注公众号或 [点这里](https://labuladong.gitee.io/article/fname.html?fname=LCS) 查看:
84+
本文为会员内容,请扫码关注公众号或 [点这里](https://labuladong.online/algo/fname.html?fname=LCS) 查看:
8585

8686
![](https://labuladong.github.io/pictures/qrcode.jpg)

‎动态规划系列/动态规划之KMP字符匹配算法.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
::: tip
2525

26-
阅读本文之前,建议你先学习一下另一种字符串匹配算法:[Rabin Karp 字符匹配算法](https://labuladong.github.io/article/fname.html?fname=rabinkarp)
26+
阅读本文之前,建议你先学习一下另一种字符串匹配算法:[Rabin Karp 字符匹配算法](https://labuladong.online/algo/fname.html?fname=rabinkarp)
2727

2828
:::
2929

@@ -444,8 +444,8 @@ KMP 算法也就是动态规划那点事,我们的公众号文章目录有一
444444
<details class="hint-container details">
445445
<summary><strong>引用本文的文章</strong></summary>
446446

447-
- [我的刷题心得:算法的本质](https://labuladong.github.io/article/fname.html?fname=算法心得)
448-
- [滑动窗口算法延伸:Rabin Karp 字符匹配算法](https://labuladong.github.io/article/fname.html?fname=rabinkarp)
447+
- [我的刷题心得:算法的本质](https://labuladong.online/algo/fname.html?fname=算法心得)
448+
- [滑动窗口算法延伸:Rabin Karp 字符匹配算法](https://labuladong.online/algo/fname.html?fname=rabinkarp)
449449

450450
</details><hr>
451451

‎动态规划系列/动态规划之博弈问题.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
**-----------**
2424

25-
上一篇文章 [几道智力题](https://labuladong.github.io/article/fname.html?fname=一行代码解决的智力题) 中讨论到一个有趣的「石头游戏」,通过题目的限制条件,这个游戏是先手必胜的。但是智力题终究是智力题,真正的算法问题肯定不会是投机取巧能搞定的。所以,本文就借石头游戏来讲讲「假设两个人都足够聪明,最后谁会获胜」这一类问题该如何用动态规划算法解决。
25+
上一篇文章 [几道智力题](https://labuladong.online/algo/fname.html?fname=一行代码解决的智力题) 中讨论到一个有趣的「石头游戏」,通过题目的限制条件,这个游戏是先手必胜的。但是智力题终究是智力题,真正的算法问题肯定不会是投机取巧能搞定的。所以,本文就借石头游戏来讲讲「假设两个人都足够聪明,最后谁会获胜」这一类问题该如何用动态规划算法解决。
2626

2727
博弈类问题的套路都差不多,下文参考 [这个 YouTube 视频](https://www.youtube.com/watch?v=WxpIHvsu1RI) 的思路讲解,其核心思路是在二维 dp 的基础上使用元组分别存储两个人的博弈结果。掌握了这个技巧以后,别人再问你什么俩海盗分宝石,俩人拿硬币的问题,你就告诉别人:我懒得想,直接给你写个算法算一下得了。
2828

@@ -55,7 +55,7 @@ public boolean PredictTheWinner(int[] nums) {
5555
}
5656
```
5757

58-
这个 `stoneGame` 函数怎么写呢?博弈问题的难点在于,两个人要轮流进行选择,而且都贼精明,应该如何编程表示这个过程呢?其实不难,还是按照 [动态规划核心框架](https://labuladong.github.io/article/fname.html?fname=动态规划详解进阶) 中强调多次的套路,首先明确 `dp` 数组的含义,然后只要找到「状态」和「选择」,一切就水到渠成了。
58+
这个 `stoneGame` 函数怎么写呢?博弈问题的难点在于,两个人要轮流进行选择,而且都贼精明,应该如何编程表示这个过程呢?其实不难,还是按照 [动态规划核心框架](https://labuladong.online/algo/fname.html?fname=动态规划详解进阶) 中强调多次的套路,首先明确 `dp` 数组的含义,然后只要找到「状态」和「选择」,一切就水到渠成了。
5959

6060
### 一、定义 `dp` 数组的含义
6161

@@ -153,7 +153,7 @@ dp[i][j].sec = 0
153153

154154
![](https://labuladong.github.io/pictures/博弈问题/3.png)
155155

156-
根据前文 [动态规划答疑篇](https://labuladong.github.io/article/fname.html?fname=最优子结构) 判断 `dp` 数组遍历方向的原则,算法应该倒着遍历 `dp` 数组:
156+
根据前文 [动态规划答疑篇](https://labuladong.online/algo/fname.html?fname=最优子结构) 判断 `dp` 数组遍历方向的原则,算法应该倒着遍历 `dp` 数组:
157157

158158
```java
159159
for (int i = n - 2; i >= 0; i--) {
@@ -238,7 +238,7 @@ int stoneGame(int[] piles) {
238238
<details class="hint-container details">
239239
<summary><strong>引用本文的文章</strong></summary>
240240

241-
- [贪心算法之区间调度问题](https://labuladong.github.io/article/fname.html?fname=贪心算法之区间调度问题)
241+
- [贪心算法之区间调度问题](https://labuladong.online/algo/fname.html?fname=贪心算法之区间调度问题)
242242

243243
</details><hr>
244244

‎动态规划系列/动态规划之四键键盘.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ def dp(n, a_num, copy):
223223
<details class="hint-container details">
224224
<summary><strong>引用本文的文章</strong></summary>
225225

226-
- [一个方法团灭 LeetCode 打家劫舍问题](https://labuladong.github.io/article/fname.html?fname=抢房子)
227-
- [最优子结构原理和 dp 数组遍历方向](https://labuladong.github.io/article/fname.html?fname=最优子结构)
226+
- [一个方法团灭 LeetCode 打家劫舍问题](https://labuladong.online/algo/fname.html?fname=抢房子)
227+
- [最优子结构原理和 dp 数组遍历方向](https://labuladong.online/algo/fname.html?fname=最优子结构)
228228

229229
</details><hr>
230230

‎动态规划系列/动态规划之正则表达.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ bool dp(string& s, int i, string& p, int j);
121121
<details class="hint-container details">
122122
<summary><strong>引用本文的文章</strong></summary>
123123
124-
- [最优子结构原理和 dp 数组遍历方向](https://labuladong.github.io/article/fname.html?fname=最优子结构)
125-
- [经典动态规划:编辑距离](https://labuladong.github.io/article/fname.html?fname=编辑距离)
124+
- [最优子结构原理和 dp 数组遍历方向](https://labuladong.online/algo/fname.html?fname=最优子结构)
125+
- [经典动态规划:编辑距离](https://labuladong.online/algo/fname.html?fname=编辑距离)
126126
127127
</details><hr>
128128
@@ -133,7 +133,7 @@ bool dp(string& s, int i, string& p, int j);
133133
<details class="hint-container details">
134134
<summary><strong>引用本文的题目</strong></summary>
135135
136-
<strong>安装 [我的 Chrome 刷题插件](https://labuladong.github.io/article/fname.html?fname=chrome插件简介) 点开下列题目可直接查看解题思路:</strong>
136+
<strong>安装 [我的 Chrome 刷题插件](https://labuladong.online/algo/intro/chrome/) 点开下列题目可直接查看解题思路:</strong>
137137
138138
| LeetCode | 力扣 |
139139
| :----: | :----: |
@@ -146,7 +146,7 @@ bool dp(string& s, int i, string& p, int j);
146146
147147
**_____________**
148148
149-
本文为会员内容,请扫码关注公众号或 [点这里](https://labuladong.gitee.io/article/fname.html?fname=动态规划之正则表达) 查看:
149+
本文为会员内容,请扫码关注公众号或 [点这里](https://labuladong.online/algo/fname.html?fname=动态规划之正则表达) 查看:
150150
151151
![](https://labuladong.github.io/pictures/qrcode.jpg)
152152

‎动态规划系列/动态规划设计:最长递增子序列.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
**-----------**
2424

25-
也许有读者看了前文 [动态规划详解](https://labuladong.github.io/article/fname.html?fname=动态规划详解进阶),学会了动态规划的套路:找到了问题的「状态」,明确了 `dp` 数组/函数的含义,定义了 base case;但是不知道如何确定「选择」,也就是找不到状态转移的关系,依然写不出动态规划解法,怎么办?
25+
也许有读者看了前文 [动态规划详解](https://labuladong.online/algo/fname.html?fname=动态规划详解进阶),学会了动态规划的套路:找到了问题的「状态」,明确了 `dp` 数组/函数的含义,定义了 base case;但是不知道如何确定「选择」,也就是找不到状态转移的关系,依然写不出动态规划解法,怎么办?
2626

2727
不要担心,动态规划的难点本来就在于寻找正确的状态转移方程,本文就借助经典的「最长递增子序列问题」来讲一讲设计动态规划的通用技巧:**数学归纳思想**
2828

@@ -55,7 +55,7 @@ int lengthOfLIS(int[] nums);
5555

5656
::: info
5757

58-
为什么这样定义呢?这是解决子序列问题的一个套路,后文 [动态规划之子序列问题解题模板](https://labuladong.github.io/article/fname.html?fname=子序列问题模板) 总结了几种常见套路。你读完本章所有的动态规划问题,就会发现 `dp` 数组的定义方法也就那几种。
58+
为什么这样定义呢?这是解决子序列问题的一个套路,后文 [动态规划之子序列问题解题模板](https://labuladong.online/algo/fname.html?fname=子序列问题模板) 总结了几种常见套路。你读完本章所有的动态规划问题,就会发现 `dp` 数组的定义方法也就那几种。
5959

6060
:::
6161

@@ -192,7 +192,7 @@ int lengthOfLIS(int[] nums) {
192192

193193
::: tip
194194

195-
前文 [二分查找算法详解](https://labuladong.github.io/article/fname.html?fname=二分查找详解) 详细介绍了二分查找的细节及变体,这里就完美应用上了,如果没读过强烈建议阅读。
195+
前文 [二分查找算法详解](https://labuladong.online/algo/fname.html?fname=二分查找详解) 详细介绍了二分查找的细节及变体,这里就完美应用上了,如果没读过强烈建议阅读。
196196

197197
:::
198198

@@ -303,21 +303,21 @@ int lengthOfLIS(int[] nums) {
303303

304304
接下来可阅读:
305305

306-
* [动态规划之最大子数组](https://labuladong.github.io/article/fname.html?fname=最大子数组)
306+
* [动态规划之最大子数组](https://labuladong.online/algo/fname.html?fname=最大子数组)
307307

308308

309309

310310
<hr>
311311
<details class="hint-container details">
312312
<summary><strong>引用本文的文章</strong></summary>
313313

314-
- [二分查找高效判定子序列](https://labuladong.github.io/article/fname.html?fname=二分查找判定子序列)
315-
- [动态规划之子序列问题解题模板](https://labuladong.github.io/article/fname.html?fname=子序列问题模板)
316-
- [动态规划穷举的两种视角](https://labuladong.github.io/article/fname.html?fname=动归两种视角)
317-
- [动态规划解题套路框架](https://labuladong.github.io/article/fname.html?fname=动态规划详解进阶)
318-
- [动态规划设计:最大子数组](https://labuladong.github.io/article/fname.html?fname=最大子数组)
319-
- [我的刷题心得:算法的本质](https://labuladong.github.io/article/fname.html?fname=算法心得)
320-
- [最优子结构原理和 dp 数组遍历方向](https://labuladong.github.io/article/fname.html?fname=最优子结构)
314+
- [二分查找高效判定子序列](https://labuladong.online/algo/fname.html?fname=二分查找判定子序列)
315+
- [动态规划之子序列问题解题模板](https://labuladong.online/algo/fname.html?fname=子序列问题模板)
316+
- [动态规划穷举的两种视角](https://labuladong.online/algo/fname.html?fname=动归两种视角)
317+
- [动态规划解题套路框架](https://labuladong.online/algo/fname.html?fname=动态规划详解进阶)
318+
- [动态规划设计:最大子数组](https://labuladong.online/algo/fname.html?fname=最大子数组)
319+
- [我的刷题心得:算法的本质](https://labuladong.online/algo/fname.html?fname=算法心得)
320+
- [最优子结构原理和 dp 数组遍历方向](https://labuladong.online/algo/fname.html?fname=最优子结构)
321321

322322
</details><hr>
323323

@@ -328,7 +328,7 @@ int lengthOfLIS(int[] nums) {
328328
<details class="hint-container details">
329329
<summary><strong>引用本文的题目</strong></summary>
330330

331-
<strong>安装 [我的 Chrome 刷题插件](https://labuladong.github.io/article/fname.html?fname=chrome插件简介) 点开下列题目可直接查看解题思路:</strong>
331+
<strong>安装 [我的 Chrome 刷题插件](https://labuladong.online/algo/intro/chrome/) 点开下列题目可直接查看解题思路:</strong>
332332

333333
| LeetCode | 力扣 |
334334
| :----: | :----: |

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /