Skip to content

Commit fa2514d

Browse files
committed
add visualization
1 parent b5ed31b commit fa2514d

33 files changed

+802
-82
lines changed

动态规划系列/LCS.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,16 @@ class Solution {
229229
}
230230
```
231231

232-
<visual slug='longest-common-subsequence'/>
232+
233+
<hr/>
234+
<a href="https://labuladong.online/algo-visualize/leetcode/longest-common-subsequence/" target="_blank">
235+
<details style="max-width:90%;max-height:400px">
236+
<summary>
237+
<strong>🍭 代码可视化动画🍭</strong>
238+
</summary>
239+
</details>
240+
</a>
241+
<hr/>
233242

234243

235244

@@ -338,7 +347,16 @@ class Solution {
338347
}
339348
```
340349

341-
<visual slug='minimum-ascii-delete-sum-for-two-strings'/>
350+
351+
<hr/>
352+
<a href="https://labuladong.online/algo-visualize/leetcode/minimum-ascii-delete-sum-for-two-strings/" target="_blank">
353+
<details style="max-width:90%;max-height:400px">
354+
<summary>
355+
<strong>🍭 代码可视化动画🍭</strong>
356+
</summary>
357+
</details>
358+
</a>
359+
<hr/>
342360

343361

344362

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,16 @@ class Solution {
310310
}
311311
```
312312

313-
<visual slug='regular-expression-matching'/>
313+
314+
<hr/>
315+
<a href="https://labuladong.online/algo-visualize/leetcode/regular-expression-matching/" target="_blank">
316+
<details style="max-width:90%;max-height:400px">
317+
<summary>
318+
<strong>🍭 代码可视化动画🍭</strong>
319+
</summary>
320+
</details>
321+
</a>
322+
<hr/>
314323

315324

316325

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

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,16 @@ class Solution {
172172
}
173173
```
174174

175-
<visual slug='longest-increasing-subsequence'/>
175+
176+
<hr/>
177+
<a href="https://labuladong.online/algo-visualize/leetcode/longest-increasing-subsequence/" target="_blank">
178+
<details style="max-width:90%;max-height:400px">
179+
<summary>
180+
<strong>🎃 代码可视化动画🎃</strong>
181+
</summary>
182+
</details>
183+
</a>
184+
<hr/>
176185

177186

178187

@@ -266,7 +275,16 @@ class Solution {
266275
}
267276
```
268277

269-
<visual slug='mydata-lis'/>
278+
279+
<hr/>
280+
<a href="https://labuladong.online/algo-visualize/tutorial/mydata-lis/" target="_blank">
281+
<details style="max-width:90%;max-height:400px">
282+
<summary>
283+
<strong>🍭 代码可视化动画🍭</strong>
284+
</summary>
285+
</details>
286+
</a>
287+
<hr/>
270288

271289

272290

@@ -346,7 +364,16 @@ class Solution {
346364
}
347365
```
348366

349-
<visual slug='russian-doll-envelopes'/>
367+
368+
<hr/>
369+
<a href="https://labuladong.online/algo-visualize/leetcode/russian-doll-envelopes/" target="_blank">
370+
<details style="max-width:90%;max-height:400px">
371+
<summary>
372+
<strong>🌟 代码可视化动画🌟</strong>
373+
</summary>
374+
</details>
375+
</a>
376+
<hr/>
350377

351378

352379

动态规划系列/动态规划详解进阶.md

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,16 @@ int fib(int N) {
100100
}
101101
```
102102

103-
<visual slug='mydata-fib'/>
103+
104+
<hr/>
105+
<a href="https://labuladong.online/algo-visualize/tutorial/mydata-fib/" target="_blank">
106+
<details style="max-width:90%;max-height:400px">
107+
<summary>
108+
<strong>🌈 代码可视化动画🌈</strong>
109+
</summary>
110+
</details>
111+
</a>
112+
<hr/>
104113

105114

106115

@@ -156,7 +165,16 @@ int dp(int[] memo, int n) {
156165
}
157166
```
158167

159-
<visual slug='mydata-fib2' />
168+
169+
<hr/>
170+
<a href="https://labuladong.online/algo-visualize/tutorial/mydata-fib2/" target="_blank">
171+
<details style="max-width:90%;max-height:400px">
172+
<summary>
173+
<strong>🌈 代码可视化动画🌈</strong>
174+
</summary>
175+
</details>
176+
</a>
177+
<hr/>
160178

161179

162180

@@ -207,7 +225,16 @@ int fib(int N) {
207225
}
208226
```
209227

210-
<visual slug='mydata-fib3' />
228+
229+
<hr/>
230+
<a href="https://labuladong.online/algo-visualize/tutorial/mydata-fib3/" target="_blank">
231+
<details style="max-width:90%;max-height:400px">
232+
<summary>
233+
<strong>🌟 代码可视化动画🌟</strong>
234+
</summary>
235+
</details>
236+
</a>
237+
<hr/>
211238

212239

213240

@@ -268,7 +295,16 @@ int fib(int n) {
268295
}
269296
```
270297

271-
<visual slug='fibonacci-number' />
298+
299+
<hr/>
300+
<a href="https://labuladong.online/algo-visualize/leetcode/fibonacci-number/" target="_blank">
301+
<details style="max-width:90%;max-height:400px">
302+
<summary>
303+
<strong>🌟 代码可视化动画🌟</strong>
304+
</summary>
305+
</details>
306+
</a>
307+
<hr/>
272308

273309

274310

@@ -382,7 +418,16 @@ class Solution {
382418
>
383419
> 另外,我经常看到有读者留言问,子问题的结果为什么要加 1`subProblem + 1`),而不是加硬币金额之类的。我这里统一提示一下,动态规划问题的关键是 `dp` 函数/数组的定义,你这个函数的返回值代表什么?你回过头去搞清楚这一点,然后就知道为什么要给子问题的返回值加 1 了。
384420

385-
<visual slug='coin-change-brute-force'/>
421+
422+
<hr/>
423+
<a href="https://labuladong.online/algo-visualize/tutorial/coin-change-brute-force/" target="_blank">
424+
<details style="max-width:90%;max-height:400px">
425+
<summary>
426+
<strong>🎃 代码可视化动画🎃</strong>
427+
</summary>
428+
</details>
429+
</a>
430+
<hr/>
386431

387432
至此,状态转移方程其实已经完成了,以上算法已经是暴力解法了,以上代码的数学形式就是状态转移方程:
388433

@@ -439,7 +484,16 @@ class Solution {
439484
}
440485
```
441486

442-
<visual slug='coin-change' />
487+
488+
<hr/>
489+
<a href="https://labuladong.online/algo-visualize/leetcode/coin-change/" target="_blank">
490+
<details style="max-width:90%;max-height:400px">
491+
<summary>
492+
<strong>🥳 代码可视化动画🥳</strong>
493+
</summary>
494+
</details>
495+
</a>
496+
<hr/>
443497

444498

445499

动态规划系列/单词拼接.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,16 @@ class Solution {
401401
> [!TIP]
402402
> 注意到计算 `prefix` 的过程中,我们是直接调用编程语言提供的子串截取函数,这个函数的时间复杂度是 $O(N)$。不难发现截取子串的开始索引是固定的 `i`,结束索引是递增的 `j`,所以我们手动维护这个 `prefix` 子串,避免调用子串截取函数,进一步提高效率。这个小优化就留给你来做吧。
403403
404-
<visual slug='word-break'/>
404+
405+
<hr/>
406+
<a href="https://labuladong.online/algo-visualize/leetcode/word-break/" target="_blank">
407+
<details style="max-width:90%;max-height:400px">
408+
<summary>
409+
<strong>🌈 代码可视化动画🌈</strong>
410+
</summary>
411+
</details>
412+
</a>
413+
<hr/>
405414

406415
这个解法能够通过所有测试用例,我们根据 [算法时空复杂度使用指南](https://labuladong.online/algo/essential-technique/complexity-analysis/) 来算一下它的时间复杂度:
407416

@@ -532,7 +541,16 @@ class Solution {
532541
}
533542
```
534543

535-
<visual slug='word-break-ii'/>
544+
545+
<hr/>
546+
<a href="https://labuladong.online/algo-visualize/leetcode/word-break-ii/" target="_blank">
547+
<details style="max-width:90%;max-height:400px">
548+
<summary>
549+
<strong>🎃 代码可视化动画🎃</strong>
550+
</summary>
551+
</details>
552+
</a>
553+
<hr/>
536554

537555
这个解法依然用备忘录消除了重叠子问题,所以 `dp` 函数递归调用的次数减少为 $O(N)$,但 `dp` 函数本身的时间复杂度上升了,因为 `subProblem` 是一个子集列表,它的长度是指数级的。
538556

动态规划系列/团灭股票问题.md

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,16 @@ int maxProfit_k_1(int[] prices) {
317317
}
318318
```
319319

320-
<visual slug="best-time-to-buy-and-sell-stock" />
320+
321+
<hr/>
322+
<a href="https://labuladong.online/algo-visualize/leetcode/best-time-to-buy-and-sell-stock/" target="_blank">
323+
<details style="max-width:90%;max-height:400px">
324+
<summary>
325+
<strong>🍭 代码可视化动画🍭</strong>
326+
</summary>
327+
</details>
328+
</a>
329+
<hr/>
321330

322331
两种方式都是一样的,不过这种编程方法简洁很多,但是如果没有前面状态转移方程的引导,是肯定看不懂的。后续的题目,你可以对比一下如何把 `dp` 数组的空间优化掉。
323332

@@ -374,7 +383,16 @@ int maxProfit_k_inf(int[] prices) {
374383
}
375384
```
376385

377-
<visual slug="best-time-to-buy-and-sell-stock-ii" />
386+
387+
<hr/>
388+
<a href="https://labuladong.online/algo-visualize/leetcode/best-time-to-buy-and-sell-stock-ii/" target="_blank">
389+
<details style="max-width:90%;max-height:400px">
390+
<summary>
391+
<strong>🌟 代码可视化动画🌟</strong>
392+
</summary>
393+
</details>
394+
</a>
395+
<hr/>
378396

379397
### 309. 最佳买卖股票时机含冷冻期
380398

@@ -437,7 +455,16 @@ int maxProfit_with_cool(int[] prices) {
437455
}
438456
```
439457

440-
<visual slug="best-time-to-buy-and-sell-stock-with-cooldown" />
458+
459+
<hr/>
460+
<a href="https://labuladong.online/algo-visualize/leetcode/best-time-to-buy-and-sell-stock-with-cooldown/" target="_blank">
461+
<details style="max-width:90%;max-height:400px">
462+
<summary>
463+
<strong>🌈 代码可视化动画🌈</strong>
464+
</summary>
465+
</details>
466+
</a>
467+
<hr/>
441468

442469
### 714. 买卖股票的最佳时机含手续费
443470

@@ -497,7 +524,16 @@ int maxProfit_with_fee(int[] prices, int fee) {
497524
}
498525
```
499526

500-
<visual slug="best-time-to-buy-and-sell-stock-with-transaction-fee" />
527+
528+
<hr/>
529+
<a href="https://labuladong.online/algo-visualize/leetcode/best-time-to-buy-and-sell-stock-with-transaction-fee/" target="_blank">
530+
<details style="max-width:90%;max-height:400px">
531+
<summary>
532+
<strong>🌈 代码可视化动画🌈</strong>
533+
</summary>
534+
</details>
535+
</a>
536+
<hr/>
501537

502538

503539

@@ -575,7 +611,16 @@ int maxProfit_k_2(int[] prices) {
575611
}
576612
```
577613

578-
<visual slug="best-time-to-buy-and-sell-stock-iii" />
614+
615+
<hr/>
616+
<a href="https://labuladong.online/algo-visualize/leetcode/best-time-to-buy-and-sell-stock-iii/" target="_blank">
617+
<details style="max-width:90%;max-height:400px">
618+
<summary>
619+
<strong>🍭 代码可视化动画🍭</strong>
620+
</summary>
621+
</details>
622+
</a>
623+
<hr/>
579624

580625

581626

@@ -666,7 +711,16 @@ int maxProfit_k_any(int max_k, int[] prices) {
666711
}
667712
```
668713

669-
<visual slug="best-time-to-buy-and-sell-stock-iv" />
714+
715+
<hr/>
716+
<a href="https://labuladong.online/algo-visualize/leetcode/best-time-to-buy-and-sell-stock-iv/" target="_blank">
717+
<details style="max-width:90%;max-height:400px">
718+
<summary>
719+
<strong>🌟 代码可视化动画🌟</strong>
720+
</summary>
721+
</details>
722+
</a>
723+
<hr/>
670724

671725

672726

动态规划系列/子序列问题模板.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,16 @@ class Solution {
188188
}
189189
```
190190

191-
<visual slug='longest-palindromic-subsequence'/>
191+
192+
<hr/>
193+
<a href="https://labuladong.online/algo-visualize/leetcode/longest-palindromic-subsequence/" target="_blank">
194+
<details style="max-width:90%;max-height:400px">
195+
<summary>
196+
<strong>🥳 代码可视化动画🥳</strong>
197+
</summary>
198+
</details>
199+
</a>
200+
<hr/>
192201

193202

194203

0 commit comments

Comments
 (0)