Skip to content

Commit 7301ed3

Browse files
author
杨世超
committed
更新题目列表链接
1 parent 1488c7d commit 7301ed3

20 files changed

+66
-66
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
- **0. 序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。
2828
- **1. 数组**:讲解数组的基本概念、数组的基本操作。
2929
- **2. 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。
30-
- **3. 堆栈、队列、哈希表**详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。
30+
- **3. 、队列、哈希表**详细介绍栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。
3131
- **4. 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。
3232
- **5. 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。
3333
- **6. 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。

docs/00_preface/00_06_categories_list.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -330,9 +330,9 @@
330330
| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii.md) | 栈、链表、数学 | 中等 |
331331

332332

333-
## 第 3 章 堆栈、队列、哈希表
333+
## 第 3 章 、队列、哈希表
334334

335-
### 堆栈基础题目
335+
### 栈基础题目
336336

337337
| 标题 | 题解 | 标签 | 难度 |
338338
| :--- | :--- | :--- | :--- |
@@ -610,7 +610,7 @@
610610

611611
## 第 6 章 图论
612612

613-
### 图的深度优先搜索题目
613+
### 深度优先搜索题目
614614

615615
| 标题 | 题解 | 标签 | 难度 |
616616
| :--- | :--- | :--- | :--- |
@@ -649,7 +649,7 @@
649649
| [0529. 扫雷游戏](https://leetcode.cn/problems/minesweeper/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minesweeper.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 |
650650

651651

652-
### 图的广度优先搜索题目
652+
### 广度优先搜索题目
653653

654654
| 标题 | 题解 | 标签 | 难度 |
655655
| :--- | :--- | :--- | :--- |

docs/00_preface/00_07_interview_100_list.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,9 @@
173173
| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers.md) | 递归、链表、数学 | 中等 |
174174

175175

176-
## 第 3 章 堆栈、队列、哈希表
176+
## 第 3 章 、队列、哈希表
177177

178-
### 堆栈基础题目
178+
### 栈基础题目
179179

180180
| 标题 | 题解 | 标签 | 难度 |
181181
| :--- | :--- | :--- | :--- |
@@ -278,7 +278,7 @@
278278

279279
## 第 6 章 图论
280280

281-
### 图的深度优先搜索题目
281+
### 深度优先搜索题目
282282

283283
| 标题 | 题解 | 标签 | 难度 |
284284
| :--- | :--- | :--- | :--- |
@@ -293,7 +293,7 @@
293293
| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 |
294294

295295

296-
### 图的广度优先搜索题目
296+
### 广度优先搜索题目
297297

298298
| 标题 | 题解 | 标签 | 难度 |
299299
| :--- | :--- | :--- | :--- |

docs/00_preface/00_08_interview_200_list.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,9 +229,9 @@
229229
| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii.md) | 栈、链表、数学 | 中等 |
230230

231231

232-
## 第 3 章 堆栈、队列、哈希表
232+
## 第 3 章 、队列、哈希表
233233

234-
### 堆栈基础题目
234+
### 栈基础题目
235235

236236
| 标题 | 题解 | 标签 | 难度 |
237237
| :--- | :--- | :--- | :--- |
@@ -379,7 +379,7 @@
379379

380380
## 第 6 章 图论
381381

382-
### 图的深度优先搜索题目
382+
### 深度优先搜索题目
383383

384384
| 标题 | 题解 | 标签 | 难度 |
385385
| :--- | :--- | :--- | :--- |
@@ -399,7 +399,7 @@
399399
| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
400400

401401

402-
### 图的广度优先搜索题目
402+
### 广度优先搜索题目
403403

404404
| 标题 | 题解 | 标签 | 难度 |
405405
| :--- | :--- | :--- | :--- |

docs/02_linked_list/02_01_linked_list_basic.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ def removeInside(self, index):
361361

362362
## 练习题目
363363

364-
- [链表基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE)
364+
- [链表基础题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE)
365365

366366
## 参考资料
367367

docs/03_stack_queue_hash_table/03_01_stack_basic.md

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
## 1. 堆栈简介
1+
## 1. 栈简介
22

3-
> **堆栈(Stack)**简称为栈。一种线性表数据结构,是一种只允许在表的一端进行插入和删除操作的线性表。
3+
> **(Stack)**也叫做「堆栈」,是一种线性表数据结构,是一种只允许在表的一端进行插入和删除操作的线性表。
44
55
我们把栈中允许插入和删除的一端称为 **「栈顶(top)」**;另一端则称为 **「栈底(bottom)」**。当表中没有任何数据元素时,称之为 **「空栈」**
66

7-
堆栈有两种基本操作**「插入操作」****「删除操作」**
7+
栈有两种基本操作**「插入操作」****「删除操作」**
88

99
- 栈的插入操作又称为「入栈」或者「进栈」。
1010
- 栈的删除操作又称为「出栈」或者「退栈」。
1111

12-
![堆栈结构](https://qcdn.itcharge.cn/images/202405092243204.png)
12+
![栈结构](https://qcdn.itcharge.cn/images/202405092243204.png)
1313

1414
简单来说,栈是一种 **「后进先出(Last In First Out)」** 的线性表,简称为 **「LIFO 结构」**
1515

@@ -21,28 +21,28 @@
2121

2222
- 第二个方面是 **「后进先出原则」**
2323

24-
根据堆栈的定义,每次删除的总是堆栈中当前的栈顶元素,即最后进入堆栈的元素。而在进栈时,最先进入堆栈的元素一定在栈底,最后进入堆栈的元素一定在栈顶。也就是说,元素进入堆栈或者退出退栈是按照「后进先出(Last In First Out)」的原则进行的。
24+
根据栈的定义,每次删除的总是栈中当前的栈顶元素,即最后进入栈的元素。而在进栈时,最先进入栈的元素一定在栈底,最后进入栈的元素一定在栈顶。也就是说,元素进入栈或者退出退栈是按照「后进先出(Last In First Out)」的原则进行的。
2525

26-
## 2. 堆栈的顺序存储与链式存储
26+
## 2. 栈的顺序存储与链式存储
2727

2828
和线性表类似,栈有两种存储表示方法:**「顺序栈」****「链式栈」**
2929

30-
- **「顺序栈」**即堆栈的顺序存储结构。利用一组地址连续的存储单元依次存放自栈底到栈顶的元素,同时使用指针 $top$ 指示栈顶元素在顺序栈中的位置。
31-
- **「链式栈」**即堆栈的链式存储结构。利用单链表的方式来实现堆栈。栈中元素按照插入顺序依次插入到链表的第一个节点之前,并使用栈顶指针 $top$ 指示栈顶元素,$top$ 永远指向链表的头节点位置。
30+
- **「顺序栈」**即栈的顺序存储结构。利用一组地址连续的存储单元依次存放自栈底到栈顶的元素,同时使用指针 $top$ 指示栈顶元素在顺序栈中的位置。
31+
- **「链式栈」**即栈的链式存储结构。利用单链表的方式来实现栈。栈中元素按照插入顺序依次插入到链表的第一个节点之前,并使用栈顶指针 $top$ 指示栈顶元素,$top$ 永远指向链表的头节点位置。
3232

33-
在描述堆栈的顺序存储与链式存储具体实现之前,我们先来看看堆栈具有哪些基本操作
33+
在描述栈的顺序存储与链式存储具体实现之前,我们先来看看栈具有哪些基本操作
3434

35-
### 2.1 堆栈的基本操作
35+
### 2.1 栈的基本操作
3636

3737
栈作为一种线性表来说,理论上应该具备线性表所有的操作特性,但由于「后进先出」的特殊性,所以针对栈的操作进行了一些变化。尤其是插入操作和删除操作,改为了入栈(push)和出栈(pop)。
3838

39-
堆栈的基本操作如下
39+
栈的基本操作如下
4040

4141
- **初始化空栈**:创建一个空栈,定义栈的大小 $size$,以及栈顶元素指针 $top$。
4242

43-
- **判断栈是否为空**当堆栈为空时,返回 $True$。当堆栈不为空时,返回 $False$。一般只用于栈中删除操作和获取当前栈顶元素操作中。
43+
- **判断栈是否为空**当栈为空时,返回 $True$。当栈不为空时,返回 $False$。一般只用于栈中删除操作和获取当前栈顶元素操作中。
4444

45-
- **判断栈是否已满**当堆栈已满时,返回 $True$,当堆栈未满时,返回 $False$。一般只用于顺序栈中插入元素和获取当前栈顶元素操作中。
45+
- **判断栈是否已满**当栈已满时,返回 $True$,当栈未满时,返回 $False$。一般只用于顺序栈中插入元素和获取当前栈顶元素操作中。
4646

4747
- **插入元素(进栈、入栈)**:相当于在线性表最后元素后面插入一个新的数据元素。并改变栈顶指针 $top$ 的指向位置。
4848

@@ -51,24 +51,24 @@
5151

5252
接下来我们来看一下栈的顺序存储与链式存储两种不同的实现方式。
5353

54-
### 2.2 堆栈的顺序存储实现
54+
### 2.2 栈的顺序存储实现
5555

56-
堆栈最简单的实现方式就是借助于一个数组来描述堆栈的顺序存储结构。在 Python 中我们可以借助列表 $list$ 来实现。这种采用顺序存储结构的堆栈也被称为 **「顺序栈」**
56+
栈最简单的实现方式就是借助于一个数组来描述栈的顺序存储结构。在 Python 中我们可以借助列表 $list$ 来实现。这种采用顺序存储结构的栈也被称为 **「顺序栈」**
5757

58-
#### 2.2.1 堆栈的顺序存储基本描述
58+
#### 2.2.1 栈的顺序存储基本描述
5959

60-
![堆栈的顺序存储](https://qcdn.itcharge.cn/images/202405092243306.png)
60+
![栈的顺序存储](https://qcdn.itcharge.cn/images/202405092243306.png)
6161

6262
我们约定 $self.top$ 指向栈顶元素所在位置。
6363

6464
- **初始化空栈**:使用列表创建一个空栈,定义栈的大小 $self.size$,并令栈顶元素指针 $self.top$ 指向 $-1$,即 $self.top = -1$。
65-
- **判断栈是否为空**:当 $self.top == -1$ 时,说明堆栈为空,返回 $True$,否则返回 $False$。
66-
- **判断栈是否已满**:当 $self.top == self.size - 1$,说明堆栈已满,返回 $True$,否则返回返回 $False$。
67-
- **插入元素(进栈、入栈)**先判断堆栈是否已满,已满直接抛出异常。如果堆栈未满,则在 $self.stack$ 末尾插入新的数据元素,并令 $self.top$ 向右移动 $1$ 位。
68-
- **删除元素(出栈、退栈)**先判断堆栈是否为空,为空直接抛出异常。如果堆栈不为空,则删除 $self.stack$ 末尾的数据元素,并令 $self.top$ 向左移动 $1$ 位。
69-
- **获取栈顶元素**先判断堆栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶元素,即 $self.stack[self.top]$。
65+
- **判断栈是否为空**:当 $self.top == -1$ 时,说明栈为空,返回 $True$,否则返回 $False$。
66+
- **判断栈是否已满**:当 $self.top == self.size - 1$,说明栈已满,返回 $True$,否则返回返回 $False$。
67+
- **插入元素(进栈、入栈)**先判断栈是否已满,已满直接抛出异常。如果栈未满,则在 $self.stack$ 末尾插入新的数据元素,并令 $self.top$ 向右移动 $1$ 位。
68+
- **删除元素(出栈、退栈)**先判断栈是否为空,为空直接抛出异常。如果栈不为空,则删除 $self.stack$ 末尾的数据元素,并令 $self.top$ 向左移动 $1$ 位。
69+
- **获取栈顶元素**先判断栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶元素,即 $self.stack[self.top]$。
7070

71-
#### 2.2.2 堆栈的顺序存储实现代码
71+
#### 2.2.2 栈的顺序存储实现代码
7272

7373
```python
7474
class Stack:
@@ -110,23 +110,23 @@ class Stack:
110110
return self.stack[self.top]
111111
```
112112

113-
### 2.3 堆栈的链式存储实现
113+
### 2.3 栈的链式存储实现
114114

115-
堆栈的顺序存储结构保留着顺序存储分配空间的固有缺陷,即在栈满或者其他需要重新调整存储空间时需要移动大量元素。为此,堆栈可以采用链式存储方式来实现。在 Python 中我们通过构造链表节点 $Node$ 的方式来实现。这种采用链式存储结构的堆栈也被称为 **「链式栈」**
115+
栈的顺序存储结构保留着顺序存储分配空间的固有缺陷,即在栈满或者其他需要重新调整存储空间时需要移动大量元素。为此,栈可以采用链式存储方式来实现。在 Python 中我们通过构造链表节点 $Node$ 的方式来实现。这种采用链式存储结构的栈也被称为 **「链式栈」**
116116

117-
![堆栈的链式存储](https://qcdn.itcharge.cn/images/202405092243367.png)
117+
![栈的链式存储](https://qcdn.itcharge.cn/images/202405092243367.png)
118118

119-
#### 2.3.1 堆栈的链式存储基本描述
119+
#### 2.3.1 栈的链式存储基本描述
120120

121121
我们约定 $self.top$ 指向栈顶元素所在位置。
122122

123123
- **初始化空栈**:使用列表创建一个空栈,并令栈顶元素指针 $self.top$ 指向 $None$,即 $self.top = None$。
124-
- **判断栈是否为空**:当 $self.top == None$ 时,说明堆栈为空,返回 $True$,否则返回 $False$。
124+
- **判断栈是否为空**:当 $self.top == None$ 时,说明栈为空,返回 $True$,否则返回 $False$。
125125
- **插入元素(进栈、入栈)**:创建值为 $value$ 的链表节点,插入到链表头节点之前,并令栈顶指针 $self.top$ 指向新的头节点。
126-
- **删除元素(出栈、退栈)**先判断堆栈是否为空,为空直接抛出异常。如果堆栈不为空,则先使用变量 $cur$ 存储当前栈顶指针 $self.top$ 指向的头节点,然后令 $self.top$ 沿着链表移动 $1$ 位,然后再删除之前保存的 $cur$ 节点。
127-
- **获取栈顶元素**先判断堆栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶节点的值,即 $self.top.value$。
126+
- **删除元素(出栈、退栈)**先判断栈是否为空,为空直接抛出异常。如果栈不为空,则先使用变量 $cur$ 存储当前栈顶指针 $self.top$ 指向的头节点,然后令 $self.top$ 沿着链表移动 $1$ 位,然后再删除之前保存的 $cur$ 节点。
127+
- **获取栈顶元素**先判断栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶节点的值,即 $self.top.value$。
128128

129-
#### 2.3.2 堆栈的链式存储实现代码
129+
#### 2.3.2 栈的链式存储实现代码
130130

131131
```python
132132
class Node:
@@ -166,13 +166,13 @@ class Stack:
166166
return self.top.value
167167
```
168168

169-
## 3. 堆栈的应用
169+
## 3. 栈的应用
170170

171-
堆栈是算法和程序中最常用的辅助结构,其的应用十分广泛。堆栈基本应用于两个方面
171+
栈是算法和程序中最常用的辅助结构,其的应用十分广泛。栈基本应用于两个方面
172172

173-
- 使用堆栈可以很方便的保存和取用信息,因此长被用作算法和程序中的辅助存储结构,临时保存信息,供后面操作中使用。
173+
- 使用栈可以很方便的保存和取用信息,因此长被用作算法和程序中的辅助存储结构,临时保存信息,供后面操作中使用。
174174
- 例如:操作系统中的函数调用栈,浏览器中的前进、后退功能。
175-
- 堆栈的后进先出规则,可以保证特定的存取顺序。
175+
- 栈的后进先出规则,可以保证特定的存取顺序。
176176
- 例如:翻转一组元素的顺序、铁路列车车辆调度。
177177

178178
下面我们来讲解一下栈应用的典型例子。
@@ -350,7 +350,7 @@ class Solution:
350350

351351
## 练习题目
352352

353-
- [堆栈基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A0%86%E6%A0%88%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE)
353+
- [栈基础题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%A0%88%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE)
354354

355355
## 参考资料
356356

docs/03_stack_queue_hash_table/03_02_monotone_stack.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ class Solution:
270270

271271
## 练习题目
272272

273-
- [单调栈题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88%E9%A2%98%E7%9B%AE)
273+
- [单调栈题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88%E9%A2%98%E7%9B%AE)
274274

275275
## 参考资料
276276

docs/03_stack_queue_hash_table/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 本章内容
22

3-
- [3.1 堆栈基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_01_stack_basic.md)
3+
- [3.1 栈基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_01_stack_basic.md)
44
- [3.2 单调栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_02_monotone_stack.md)
55
- [3.3 队列基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_03_queue_basic.md)
66
- [3.4 优先队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_04_priority_queue.md)

docs/06_graph/06_03_graph_dfs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ class Solution:
326326

327327
## 练习题目
328328

329-
- [图的深度优先搜索题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE)
329+
- [深度优先搜索题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE)
330330

331331
## 参考资料
332332

docs/06_graph/06_04_graph_bfs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ class Solution:
271271

272272
## 练习题目
273273

274-
- [图的广度优先搜索题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE)
274+
- [广度优先搜索题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE)
275275

276276
## 参考资料
277277

0 commit comments

Comments
 (0)