Skip to content

Commit ce6e658

Browse files
kamakama
kama
authored and
kama
committed
更新图片链接
1 parent b489cb6 commit ce6e658

File tree

315 files changed

+2499
-1729
lines changed

Some content is hidden

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

315 files changed

+2499
-1729
lines changed

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@
181181

182182

183183
题目分类大纲如下:
184-
<img src='https://file.kamacoder.com/pics/20240424172231.png' width=600 alt='二叉树大纲'> </img></div>
184+
<img src='https://file1.kamacoder.com/i/algo/20240424172231.png' width=600 alt='二叉树大纲'> </img></div>
185185

186186
1. [关于二叉树,你该了解这些!](./problems/二叉树理论基础.md)
187187
2. [二叉树:二叉树的递归遍历](./problems/二叉树的递归遍历.md)
@@ -222,7 +222,7 @@
222222

223223
题目分类大纲如下:
224224

225-
<img src='https://file.kamacoder.com/pics/20240424172311.png' width=600 alt='回溯算法大纲'> </img></div>
225+
<img src='https://file1.kamacoder.com/i/algo/20240424172311.png' width=600 alt='回溯算法大纲'> </img></div>
226226

227227
1. [关于回溯算法,你该了解这些!](./problems/回溯算法理论基础.md)
228228
2. [回溯算法:77.组合](./problems/0077.组合.md)
@@ -252,7 +252,7 @@
252252
题目分类大纲如下:
253253

254254

255-
<img src='https://file.kamacoder.com/pics/20210917104315.png' width=600 alt='贪心算法大纲'> </img></div>
255+
<img src='https://file1.kamacoder.com/i/algo/20210917104315.png' width=600 alt='贪心算法大纲'> </img></div>
256256

257257
1. [关于贪心算法,你该了解这些!](./problems/贪心算法理论基础.md)
258258
2. [贪心算法:455.分发饼干](./problems/0455.分发饼干.md)
@@ -283,7 +283,7 @@
283283

284284
动态规划专题已经开始啦,来不及解释了,小伙伴们上车别掉队!
285285

286-
<img src='https://code-thinking.cdn.bcebos.com/pics/动态规划-总结大纲1.jpg' width=500> </img></div>
286+
<img src='https://file1.kamacoder.com/i/algo/动态规划-总结大纲1.jpg' width=500> </img></div>
287287
1. [关于动态规划,你该了解这些!](./problems/动态规划理论基础.md)
288288
2. [动态规划:509.斐波那契数](./problems/0509.斐波那契数.md)
289289
3. [动态规划:70.爬楼梯](./problems/0070.爬楼梯.md)
@@ -297,7 +297,7 @@
297297

298298
背包问题系列:
299299

300-
<img src='https://code-thinking.cdn.bcebos.com/pics/动态规划-背包问题总结.png' width=500 alt='背包问题大纲'> </img></div>
300+
<img src='https://file1.kamacoder.com/i/algo/动态规划-背包问题总结.png' width=500 alt='背包问题大纲'> </img></div>
301301

302302

303303
11. [动态规划:01背包理论基础(二维dp数组)](./problems/背包理论基础01背包-1.md)
@@ -328,7 +328,7 @@
328328

329329
股票系列:
330330

331-
<img src='https://code-thinking.cdn.bcebos.com/pics/股票问题总结.jpg' width=500 alt='股票问题总结'> </img></div>
331+
<img src='https://file1.kamacoder.com/i/algo/股票问题总结.jpg' width=500 alt='股票问题总结'> </img></div>
332332

333333

334334
32. [动态规划:121.买卖股票的最佳时机](./problems/0121.买卖股票的最佳时机.md)
@@ -343,7 +343,7 @@
343343

344344
子序列系列:
345345

346-
<img src='https://code-thinking.cdn.bcebos.com/pics/动态规划-子序列问题总结.jpg' width=500 alt=''> </img></div>
346+
<img src='https://file1.kamacoder.com/i/algo/动态规划-子序列问题总结.jpg' width=500 alt=''> </img></div>
347347

348348

349349
41. [动态规划:300.最长递增子序列](./problems/0300.最长上升子序列.md)
@@ -503,5 +503,5 @@
503503

504504
添加微信记得备注,如果是已工作,备注:姓名-城市-岗位。如果学生,备注:姓名-学校-年级。**备注没有自我介绍不通过哦**
505505

506-
<div align="center"><img src="https://file.kamacoder.com/pics/第二企业刷题活码.png" data-img="1" width="200" height="200"></img></div>
506+
<div align="center"><img src="https://file1.kamacoder.com/i/algo/shuati20250519.jpg" data-img="1" width="200" height="200"></img></div>
507507

problems/0001.两数之和.md

100644100755
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,10 @@ map目的用来存放我们访问过的元素,因为遍历数组的时候,
8383

8484
过程如下:
8585

86-
![过程一](https://file.kamacoder.com/pics/20220711202638.png)
86+
![过程一](https://file1.kamacoder.com/i/algo/20220711202638.png)
8787

8888

89-
![过程二](https://file.kamacoder.com/pics/20230220223536.png)
89+
![过程二](https://file1.kamacoder.com/i/algo/20230220223536.png)
9090

9191
C++代码:
9292

problems/0005.最长回文子串.md

100644100755
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ dp[i][j]可以初始化为true么? 当然不行,怎能刚开始就全都匹
106106

107107
dp[i + 1][j - 1] 在 dp[i][j]的左下角,如图:
108108

109-
![647.回文子串](https://file.kamacoder.com/pics/20210121171032473.jpg)
109+
![647.回文子串](https://file1.kamacoder.com/i/algo/20210121171032473.jpg)
110110

111111
如果这矩阵是从上到下,从左到右遍历,那么会用到没有计算过的dp[i + 1][j - 1],也就是根据不确定是不是回文的区间[i+1,j-1],来判断了[i,j]是不是回文,那结果一定是不对的。
112112

@@ -140,7 +140,7 @@ for (int i = s.size() - 1; i >= 0; i--) { // 注意遍历顺序
140140

141141
举例,输入:"aaa",dp[i][j]状态如下:
142142

143-
![647.回文子串1](https://file.kamacoder.com/pics/20210121171059951.jpg)
143+
![647.回文子串1](https://file1.kamacoder.com/i/algo/20210121171059951.jpg)
144144

145145
**注意因为dp[i][j]的定义,所以j一定是大于等于i的,那么在填充dp[i][j]的时候一定是只填充右上半部分**
146146

problems/0015.三数之和.md

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public:
100100

101101
动画效果如下:
102102

103-
![15.三数之和](https://code-thinking.cdn.bcebos.com/gifs/15.%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.gif)
103+
![15.三数之和](https://file1.kamacoder.com/i/algo/15.%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.gif)
104104

105105
拿这个nums数组来举例,首先将数组排序,然后有一层for循环,i从下标0的地方开始,同时定一个下标left 定义在i+1的位置上,定义下标right 在数组结尾的位置上。
106106

problems/0017.电话号码的字母组合.md

100644100755
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
1313

14-
![17.电话号码的字母组合](https://file.kamacoder.com/pics/2020102916424043.png)
14+
![17.电话号码的字母组合](https://file1.kamacoder.com/i/algo/2020102916424043.png)
1515

1616
示例:
1717
* 输入:"23"
@@ -64,7 +64,7 @@ const string letterMap[10] = {
6464

6565
例如:输入:"23",抽象为树形结构,如图所示:
6666

67-
![17. 电话号码的字母组合](https://file.kamacoder.com/pics/20201123200304469.png)
67+
![17. 电话号码的字母组合](https://file1.kamacoder.com/i/algo/20201123200304469.png)
6868

6969
图中可以看出遍历的深度,就是输入"23"的长度,而叶子节点就是我们要收集的结果,输出["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
7070

problems/0018.四数之和.md

100644100755
File mode changed.

problems/0019.删除链表的倒数第N个节点.md

100644100755
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
示例 1:
1717

1818

19-
![19.删除链表的倒数第N个节点](https://file.kamacoder.com/pics/20210510085957392.png)
19+
![19.删除链表的倒数第N个节点](https://file1.kamacoder.com/i/algo/20210510085957392.png)
2020

2121
输入:head = [1,2,3,4,5], n = 2
2222
输出:[1,2,3,5]
@@ -49,16 +49,16 @@
4949

5050
* 定义fast指针和slow指针,初始值为虚拟头结点,如图:
5151

52-
<img src='https://code-thinking.cdn.bcebos.com/pics/19.%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E8%8A%82%E7%82%B9.png' width=600> </img></div>
52+
<img src='https://file1.kamacoder.com/i/algo/19.%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E8%8A%82%E7%82%B9.png' width=600> </img></div>
5353

5454
* fast首先走n + 1步 ,为什么是n+1呢,因为只有这样同时移动的时候slow才能指向删除节点的上一个节点(方便做删除操作),如图:
55-
<img src='https://code-thinking.cdn.bcebos.com/pics/19.%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E8%8A%82%E7%82%B91.png' width=600> </img></div>
55+
<img src='https://file1.kamacoder.com/i/algo/19.%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E8%8A%82%E7%82%B91.png' width=600> </img></div>
5656

5757
* fast和slow同时移动,直到fast指向末尾,如题:
58-
<img src='https://code-thinking.cdn.bcebos.com/pics/19.%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E8%8A%82%E7%82%B92.png' width=600> </img></div>
58+
<img src='https://file1.kamacoder.com/i/algo/19.%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E8%8A%82%E7%82%B92.png' width=600> </img></div>
5959
//图片中有错别词:应该将“只到”改为“直到”
6060
* 删除slow指向的下一个节点,如图:
61-
<img src='https://code-thinking.cdn.bcebos.com/pics/19.%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E8%8A%82%E7%82%B93.png' width=600> </img></div>
61+
<img src='https://file1.kamacoder.com/i/algo/19.%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%ACN%E4%B8%AA%E8%8A%82%E7%82%B93.png' width=600> </img></div>
6262

6363
此时不难写出如下C++代码:
6464

problems/0020.有效的括号.md

100644100755
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,21 @@ cd a/b/c/../../
8181

8282

8383
1. 第一种情况,字符串里左方向的括号多余了 ,所以不匹配。
84-
![括号匹配1](https://file.kamacoder.com/pics/2020080915505387.png)
84+
![括号匹配1](https://file1.kamacoder.com/i/algo/2020080915505387.png)
8585

8686
2. 第二种情况,括号没有多余,但是 括号的类型没有匹配上。
87-
![括号匹配2](https://file.kamacoder.com/pics/20200809155107397.png)
87+
![括号匹配2](https://file1.kamacoder.com/i/algo/20200809155107397.png)
8888

8989
3. 第三种情况,字符串里右方向的括号多余了,所以不匹配。
90-
![括号匹配3](https://file.kamacoder.com/pics/20200809155115779.png)
90+
![括号匹配3](https://file1.kamacoder.com/i/algo/20200809155115779.png)
9191

9292

9393

9494
我们的代码只要覆盖了这三种不匹配的情况,就不会出问题,可以看出 动手之前分析好题目的重要性。
9595

9696
动画如下:
9797

98-
![20.有效括号](https://code-thinking.cdn.bcebos.com/gifs/20.有效括号.gif)
98+
![20.有效括号](https://file1.kamacoder.com/i/algo/20.有效括号.gif)
9999

100100

101101
第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false

problems/0024.两两交换链表中的节点.md

100644100755
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
1313

1414

15-
<img src='https://code-thinking.cdn.bcebos.com/pics/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9-%E9%A2%98%E6%84%8F.jpg' width=600 alt='24.两两交换链表中的节点-题意'> </img></div>
15+
<img src='https://file1.kamacoder.com/i/algo/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9-%E9%A2%98%E6%84%8F.jpg' width=600 alt='24.两两交换链表中的节点-题意'> </img></div>
1616

1717
## 算法公开课
1818

@@ -31,16 +31,16 @@
3131

3232
初始时,cur指向虚拟头结点,然后进行如下三步:
3333

34-
![24.两两交换链表中的节点1](https://code-thinking.cdn.bcebos.com/pics/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B91.png)
34+
![24.两两交换链表中的节点1](https://file1.kamacoder.com/i/algo/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B91.png)
3535

3636
操作之后,链表如下:
3737

38-
![24.两两交换链表中的节点2](https://code-thinking.cdn.bcebos.com/pics/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B92.png)
38+
![24.两两交换链表中的节点2](https://file1.kamacoder.com/i/algo/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B92.png)
3939

4040
看这个可能就更直观一些了:
4141

4242

43-
![24.两两交换链表中的节点3](https://code-thinking.cdn.bcebos.com/pics/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B93.png)
43+
![24.两两交换链表中的节点3](https://file1.kamacoder.com/i/algo/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B93.png)
4444

4545
对应的C++代码实现如下: (注释中详细和如上图中的三步做对应)
4646

@@ -81,7 +81,7 @@ public:
8181

8282
心想应该没有更好的方法了吧,也就 $O(n)$ 的时间复杂度,重复提交几次,这样了:
8383

84-
![24.两两交换链表中的节点](https://code-thinking.cdn.bcebos.com/pics/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.png)
84+
![24.两两交换链表中的节点](https://file1.kamacoder.com/i/algo/24.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.png)
8585

8686
力扣上的统计如果两份代码是 100ms 和 300ms的耗时,其实是需要注意的。
8787

problems/0027.移除元素.md

100644100755
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
删除过程如下:
4545

46-
![27.移除元素-暴力解法](https://code-thinking.cdn.bcebos.com/gifs/27.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0-%E6%9A%B4%E5%8A%9B%E8%A7%A3%E6%B3%95.gif)
46+
![27.移除元素-暴力解法](https://file1.kamacoder.com/i/algo/27.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0-%E6%9A%B4%E5%8A%9B%E8%A7%A3%E6%B3%95.gif)
4747

4848
很明显暴力解法的时间复杂度是O(n^2),这道题目暴力解法在leetcode上是可以过的。
4949

@@ -87,7 +87,7 @@ public:
8787

8888
删除过程如下:
8989

90-
![27.移除元素-双指针法](https://code-thinking.cdn.bcebos.com/gifs/27.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0-%E5%8F%8C%E6%8C%87%E9%92%88%E6%B3%95.gif)
90+
![27.移除元素-双指针法](https://file1.kamacoder.com/i/algo/27.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0-%E5%8F%8C%E6%8C%87%E9%92%88%E6%B3%95.gif)
9191

9292
很多同学不了解
9393

problems/0028.实现strStr.md

100644100755
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ next数组就是一个前缀表(prefix table)。
106106

107107
如动画所示:
108108

109-
![KMP详解1](https://code-thinking.cdn.bcebos.com/gifs/KMP%E7%B2%BE%E8%AE%B21.gif)
109+
![KMP详解1](https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B21.gif)
110110

111111
动画里,我特意把 子串`aa` 标记上了,这是有原因的,大家先注意一下,后面还会说到。
112112

@@ -147,11 +147,11 @@ next数组就是一个前缀表(prefix table)。
147147
这就是前缀表,那为啥就能告诉我们 上次匹配的位置,并跳过去呢?
148148

149149
回顾一下,刚刚匹配的过程在下标5的地方遇到不匹配,模式串是指向f,如图:
150-
<img src='https://code-thinking.cdn.bcebos.com/pics/KMP%E7%B2%BE%E8%AE%B21.png' width=600 alt='KMP精讲1'> </img></div>
150+
<img src='https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B21.png' width=600 alt='KMP精讲1'> </img></div>
151151

152152

153153
然后就找到了下标2,指向b,继续匹配:如图:
154-
<img src='https://code-thinking.cdn.bcebos.com/pics/KMP%E7%B2%BE%E8%AE%B22.png' width=600 alt='KMP精讲2'> </img></div>
154+
<img src='https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B22.png' width=600 alt='KMP精讲2'> </img></div>
155155

156156
以下这句话,对于理解为什么使用前缀表可以告诉我们匹配失败之后跳到哪里重新匹配 非常重要!
157157

@@ -167,15 +167,15 @@ next数组就是一个前缀表(prefix table)。
167167

168168
如图:
169169

170-
<img src='https://code-thinking.cdn.bcebos.com/pics/KMP%E7%B2%BE%E8%AE%B25.png' width=600 alt='KMP精讲5'> </img></div>
170+
<img src='https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B25.png' width=600 alt='KMP精讲5'> </img></div>
171171

172172
长度为前1个字符的子串`a`,最长相同前后缀的长度为0。(注意字符串的**前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串****后缀是指不包含第一个字符的所有以最后一个字符结尾的连续子串**。)
173173

174-
<img src='https://code-thinking.cdn.bcebos.com/pics/KMP%E7%B2%BE%E8%AE%B26.png' width=600 alt='KMP精讲6'> </img></div>
174+
<img src='https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B26.png' width=600 alt='KMP精讲6'> </img></div>
175175

176176
长度为前2个字符的子串`aa`,最长相同前后缀的长度为1。
177177

178-
<img src='https://code-thinking.cdn.bcebos.com/pics/KMP%E7%B2%BE%E8%AE%B27.png' width=600 alt='KMP精讲7'> </img></div>
178+
<img src='https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B27.png' width=600 alt='KMP精讲7'> </img></div>
179179

180180
长度为前3个字符的子串`aab`,最长相同前后缀的长度为0。
181181

@@ -185,13 +185,13 @@ next数组就是一个前缀表(prefix table)。
185185
长度为前6个字符的子串`aabaaf`,最长相同前后缀的长度为0。
186186

187187
那么把求得的最长相同前后缀的长度就是对应前缀表的元素,如图:
188-
<img src='https://code-thinking.cdn.bcebos.com/pics/KMP%E7%B2%BE%E8%AE%B28.png' width=600 alt='KMP精讲8'> </img></div>
188+
<img src='https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B28.png' width=600 alt='KMP精讲8'> </img></div>
189189

190190
可以看出模式串与前缀表对应位置的数字表示的就是:**下标i之前(包括i)的字符串中,有多大长度的相同前缀后缀。**
191191

192192
再来看一下如何利用 前缀表找到 当字符不匹配的时候应该指针应该移动的位置。如动画所示:
193193

194-
![KMP精讲2](https://code-thinking.cdn.bcebos.com/gifs/KMP%E7%B2%BE%E8%AE%B22.gif)
194+
![KMP精讲2](https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B22.gif)
195195

196196
找到的不匹配的位置, 那么此时我们要看它的前一个字符的前缀表的数值是多少。
197197

@@ -225,7 +225,7 @@ next数组就可以是前缀表,但是很多实现都是把前缀表统一减
225225

226226
匹配过程动画如下:
227227

228-
![KMP精讲4](https://code-thinking.cdn.bcebos.com/gifs/KMP%E7%B2%BE%E8%AE%B24.gif)
228+
![KMP精讲4](https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B24.gif)
229229

230230
### 时间复杂度分析
231231

@@ -332,7 +332,7 @@ void getNext(int* next, const string& s){
332332

333333
代码构造next数组的逻辑流程动画如下:
334334

335-
![KMP精讲3](https://code-thinking.cdn.bcebos.com/gifs/KMP%E7%B2%BE%E8%AE%B23.gif)
335+
![KMP精讲3](https://file1.kamacoder.com/i/algo/KMP%E7%B2%BE%E8%AE%B23.gif)
336336

337337
得到了next数组之后,就要用这个来做匹配了。
338338

problems/0031.下一个排列.md

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767

6868
以求1243为例,流程如图:
6969

70-
<img src='https://code-thinking.cdn.bcebos.com/pics/31.下一个排列.png' width=600> </img></div>
70+
<img src='https://file1.kamacoder.com/i/algo/31.下一个排列.png' width=600> </img></div>
7171

7272
对应的C++代码如下:
7373

problems/0034.在排序数组中查找元素的第一个和最后一个位置.md

100644100755
File mode changed.

problems/0035.搜索插入位置.md

100644100755
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
这道题目,要在数组中插入目标值,无非是这四种情况。
4343

44-
![35_搜索插入位置3](https://file.kamacoder.com/pics/20201216232148471.png)
44+
![35_搜索插入位置3](https://file1.kamacoder.com/i/algo/20201216232148471.png)
4545

4646
* 目标值在数组所有元素之前
4747
* 目标值等于数组中某一个元素
@@ -82,14 +82,14 @@ public:
8282
8383
效率如下:
8484
85-
![35_搜索插入位置](https://file.kamacoder.com/pics/20201216232127268.png)
85+
![35_搜索插入位置](https://file1.kamacoder.com/i/algo/20201216232127268.png)
8686
8787
### 二分法
8888
8989
既然暴力解法的时间复杂度是O(n),就要尝试一下使用二分查找法。
9090
9191
92-
![35_搜索插入位置4](https://file.kamacoder.com/pics/202012162326354.png)
92+
![35_搜索插入位置4](https://file1.kamacoder.com/i/algo/202012162326354.png)
9393
9494
大家注意这道题目的前提是数组是有序数组,这也是使用二分查找的基础条件。
9595
@@ -99,7 +99,7 @@ public:
9999
100100
大体讲解一下二分法的思路,这里来举一个例子,例如在这个数组中,使用二分法寻找元素为5的位置,并返回其下标。
101101
102-
![35_搜索插入位置5](https://file.kamacoder.com/pics/20201216232659199.png)
102+
![35_搜索插入位置5](https://file1.kamacoder.com/i/algo/20201216232659199.png)
103103
104104
二分查找涉及的很多的边界条件,逻辑比较简单,就是写不好。
105105
@@ -150,7 +150,7 @@ public:
150150
* 空间复杂度:O(1)
151151

152152
效率如下:
153-
![35_搜索插入位置2](https://file.kamacoder.com/pics/2020121623272877.png)
153+
![35_搜索插入位置2](https://file1.kamacoder.com/i/algo/2020121623272877.png)
154154

155155
### 二分法第二种写法
156156

0 commit comments

Comments
 (0)