Skip to content

Commit cc3adb0

Browse files
committed
更新序言部分相关图片、图片标题
1 parent 8c75fc4 commit cc3adb0

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

Contents/00.Introduction/01.Data-Structures-Algorithms.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
![](https://qcdn.itcharge.cn/images/202109092112373.png)
1+
![程序=算法+数据结构](https://qcdn.itcharge.cn/images/202109092112373.png)
22

33
> 数据结构是程序的骨架,而算法则是程序的灵魂。
44
@@ -46,23 +46,23 @@
4646
4747
集合结构中的数据元素是无序的,并且每个数据元素都是唯一的,集合中没有相同的数据元素。集合结构很像数学意义上的「集合」。
4848

49-
![](https://qcdn.itcharge.cn/images/202109092116404.png)
49+
![集合结构](https://qcdn.itcharge.cn/images/20240509150647.png)
5050

5151
#### 2. 线性结构
5252

5353
> **线性结构**:数据元素之间是「一对一」关系。
5454
5555
线性结构中的数据元素(除了第一个和最后一个元素),左侧和右侧分别只有一个数据与其相邻。线性结构类型包括:数组、链表,以及由它们衍生出来的栈、队列、哈希表。
5656

57-
![](https://qcdn.itcharge.cn/images/202109092117492.png)
57+
![线性结构](https://qcdn.itcharge.cn/images/20240509150709.png)
5858

5959
#### 3. 树形结构
6060

6161
> **树形结构**:数据元素之间是「一对多」的层次关系。
6262
6363
最简单的树形结构是二叉树。这种结构可以简单的表示为:根, 左子树, 右子树。 左子树和右子树又有自己的子树。当然除了二叉树,树形结构类型还包括:多叉树、字典树等。
6464

65-
![](https://qcdn.itcharge.cn/images/202109092118089.png)
65+
![树形结构](https://qcdn.itcharge.cn/images/20240509150724.png)
6666

6767
#### 4. 图形结构
6868

@@ -72,7 +72,7 @@
7272

7373
在图形结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。图形结构类型包括:无向图、有向图、连通图等。
7474

75-
![](https://qcdn.itcharge.cn/images/202109092119090.png)
75+
![图形结构](https://qcdn.itcharge.cn/images/20240509150831.png)
7676

7777
### 1.2 数据的物理结构
7878

@@ -84,7 +84,7 @@
8484

8585
> **顺序存储结构(Sequential Storage Structure)**:将数据元素存放在一片地址连续的存储单元里,数据元素之间的逻辑关系通过数据元素的存储地址来直接反映。
8686
87-
![](https://qcdn.itcharge.cn/images/202109092121742.png)
87+
![顺序存储结构](https://qcdn.itcharge.cn/images/20240509150846.png)
8888

8989
在顺序存储结构中,逻辑上相邻的数据元素在物理地址上也必然相邻 。
9090

@@ -94,7 +94,7 @@
9494

9595
> **链式存储结构(Linked Storage Structure)**:将数据元素存放在任意的存储单元里,存储单元可以连续,也可以不连续。
9696
97-
![](https://qcdn.itcharge.cn/images/202109092120553.png)
97+
![链式存储结构](https://qcdn.itcharge.cn/images/20240509150902.png)
9898

9999
链式存储结构中,逻辑上相邻的数据元素在物理地址上可能相邻,可也能不相邻。其在物理地址上的表现是随机的。链式存储结构中,一般将每个数据元素占用的若干单元的组合称为一个链结点。每个链结点不仅要存放一个数据元素的数据信息,还要存放一个指出这个数据元素在逻辑关系的直接后继元素所在链结点的地址,该地址被称为指针。换句话说,数据元素之间的逻辑关系是通过指针来间接反映的。
100100

Contents/00.Introduction/02.Algorithm-Complexity.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def algorithm(n):
4949
return fact
5050
```
5151

52-
把上述算法中所有语句的执行次数加起来 $1 + n + n + 1 = 2n + 2$,可以用一个函数 $f(n)$ 来表达语句的执行次数:$f(n) = 2n + 2$。
52+
把上述算法中所有语句的执行次数加起来 $1 + n + n + 1 = 2 \times n + 2$,可以用一个函数 $f(n)$ 来表达语句的执行次数:$f(n) = 2 \times n + 2$。
5353

5454
则时间复杂度的函数可以表示为:$T(n) = O(f(n))$。它表示的是随着问题规模 n 的增大,算法执行时间的增长趋势跟 $f(n)$ 相同。$O$ 是一种渐进符号,$T(n)$ 称作算法的 **渐进时间复杂度(Asymptotic Time Complexity)**,简称为 **时间复杂度**
5555

@@ -81,7 +81,7 @@ $\Theta$ 符号渐进地给出了一个函数的上界和下界,如果我们
8181
8282
同样,如果我们只知道函数的下界,可以使用 $\Omega$ 渐进下界符号。
8383

84-
![](https://qcdn.itcharge.cn/images/202109092356694.png)
84+
![$\Theta$、$O$ 和 $\Omega$ 记号对比](https://qcdn.itcharge.cn/images/202109092356694.png)
8585

8686
### 2.3 时间复杂度计算
8787

@@ -101,11 +101,11 @@ $\Theta$ 符号渐进地给出了一个函数的上界和下界,如果我们
101101

102102
- **加法原则**:总的时间复杂度等于量级最大的基本语句的时间复杂度。
103103

104-
如果 $T_1(n) = O(f_1(n))$,$T_2(n) = O(f_2(n))$,$T(n) = T_1(n) + T_2(n)$,则 $T(n) = O(f(n)) = max(O(f_1(n)), O(f_2(n))) = O(max(f_1(n), f_2(n)))$。
104+
如果 $T_1(n) = O(f_1(n))$,$T_2(n) = O(f_2(n))$,$T(n) = T_1(n) + T_2(n)$,则 $T(n) = O(f(n)) = max(O(f_1(n)), \enspace O(f_2(n))) = O(max(f_1(n), \enspace f_2(n)))$。
105105

106106
- **乘法原则**:循环嵌套代码的复杂度等于嵌套内外基本语句的时间复杂度乘积。
107107

108-
如果 $T_1 = O(f_1(n))$,$T_2 = O(f_2(n))$,$T(n) = T_1(n)T_2(n)$,则 $T(n) = O(f(n)) = O(f_1(n))O(f_2(n)) = O(f_1(n)f_2(n))$。
108+
如果 $T_1 = O(f_1(n))$,$T_2 = O(f_2(n))$,$T(n) = T_1(n) \times T_2(n)$,则 $T(n) = O(f(n)) = O(f_1(n)) \times O(f_2(n)) = O(f_1(n) \times f_2(n))$。
109109

110110
下面通过实例来说明如何计算时间复杂度。
111111

Contents/00.Introduction/03.LeetCode-Guide.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,37 @@ LeetCode 上有 $3000+$ 道的编程问题,支持 $16+$ 种编程语言(C、
1616
2. 输入手机号,获取验证码。
1717
3. 输入验证码之后,点击「登录 / 注册」,就注册好了。
1818

19-
![](https://qcdn.itcharge.cn/images/20210901155409.png)
19+
![LeetCode 注册页面](https://qcdn.itcharge.cn/images/20210901155409.png)
2020

2121
### 2.2 LeetCode 题库
2222

2323
[题库](https://leetcode.cn/problemset/algorithms/)」是 LeetCode 上最直接的练习入口,在这里可以根据题目的标签、难度、状态进行刷题。也可以按照随机一题开始刷题。
2424

25-
![](https://qcdn.itcharge.cn/images/20210901155423.png)
25+
![LeetCode 题库页面](https://qcdn.itcharge.cn/images/20210901155423.png)
2626

2727
#### 1. 题目标签
2828

2929
LeetCode 的题目涉及了许多算法和数据结构。有贪心,搜索,动态规划,链表,二叉树,哈希表等等,可以通过选择对应标签进行专项刷题,同时也可以看到对应专题的完成度情况。
3030

31-
![](https://qcdn.itcharge.cn/images/20210901155435.png)
31+
![LeetCode 题目标签](https://qcdn.itcharge.cn/images/20210901155435.png)
3232

3333
#### 2. 题目列表
3434

3535
LeetCode 提供了题目的搜索过滤功能。可以筛选相关题单、不同难易程度、题目完成状态、不同标签的题目。还可以根据题目编号、题解数目、通过率、难度、出现频率等进行排序。
3636

37-
![](https://qcdn.itcharge.cn/images/20210901155450.png)
37+
![LeetCode 题目列表](https://qcdn.itcharge.cn/images/20210901155450.png)
3838

3939
#### 3. 当前进度
4040

4141
当前进度提供了一个直观的进度展示。在这里可以看到自己的练习概况。进度会自动展现当前的做题情况。也可以点击「[进度设置](https://leetcode.cn/session/)」创建新的进度,在这里还可以修改、删除相关的进度。
4242

43-
![](https://qcdn.itcharge.cn/images/20210901155500.png)
43+
![LeetCode 当前进度](https://qcdn.itcharge.cn/images/20210901155500.png)
4444

4545
#### 4. 题目详情
4646

4747
从题目大相关题目点击进去,就可以看到这道题目的内容描述和代码编辑器。在这里还可以查看相关的题解和自己的提交记录。
4848

49-
![](https://qcdn.itcharge.cn/images/20210901155529.png)
49+
![LeetCode 题目详情](https://qcdn.itcharge.cn/images/20210901155529.png)
5050

5151
### 2.3 LeetCode 刷题语言
5252

@@ -62,13 +62,13 @@ LeetCode 提供了题目的搜索过滤功能。可以筛选相关题单、不
6262

6363
在「2.2 LeetCode 题库 —— 4. 题目详情」中我们介绍了题目的相关情况。
6464

65-
![](https://qcdn.itcharge.cn/images/20210901155529.png)
65+
![LeetCode 题目详情](https://qcdn.itcharge.cn/images/20210901155529.png)
6666

6767
可以看到左侧区域为题目内容描述区域,在这里可以看到题目的内容描述和一些示例数据。而右侧是代码编辑区域,代码编辑区域里边默认显示了待实现的方法。
6868

6969
我们需要在代码编辑器中根据方法给定的参数实现对应的算法,并返回题目要求的结果。然后还要经过「执行代码」测试结果,点击「提交」后,显示执行结果为「**通过**」时,才算完成一道题目。
7070

71-
![](https://qcdn.itcharge.cn/images/20210901155545.png)
71+
![LeetCode 提交记录](https://qcdn.itcharge.cn/images/20210901155545.png)
7272

7373
总结一下我们的刷题流程为:
7474

@@ -146,7 +146,7 @@ class Solution:
146146

147147
##### 思路 2:哈希表
148148

149-
哈希表中键值对信息为 $target-nums[i] :i,其中 $i$ 为下标。
149+
哈希表中键值对信息为 $target - nums[i]: i$,其中 $i$ 为下标。
150150

151151
1. 遍历数组,对于每一个数 $nums[i]$:
152152
1. 先查找字典中是否存在 $target - nums[i]$,存在则输出 $target - nums[i]$ 对应的下标和当前数组的下标 $i$。

0 commit comments

Comments
 (0)