Skip to content

Commit 8be4240

Browse files
committed
update hello-algo
1 parent fe9178d commit 8be4240

File tree

109 files changed

+4214
-12711
lines changed

Some content is hidden

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

109 files changed

+4214
-12711
lines changed

面试和算法/hello-algo/chapter_appendix/contribution.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# 一起参与创作
22

3-
由于作者能力有限,书中难免存在一些遗漏和错误,请您谅解。如果您发现了笔误、失效链接、内容缺失、文字歧义、解释不清晰或行文结构不合理等问题,请协助我们进行修正,以给读者提供更优质的学习资源。
3+
由于笔者能力有限,书中难免存在一些遗漏和错误,请您谅解。如果您发现了笔误、链接失效、内容缺失、文字歧义、解释不清晰或行文结构不合理等问题,请协助我们进行修正,以给读者提供更优质的学习资源。
44

5-
所有[撰稿人](https://github.com/krahets/hello-algo/graphs/contributors)的 GitHub ID 将被展示在本书的仓库主页上,以感谢他们对开源社区的无私奉献。
5+
所有[撰稿人](https://github.com/krahets/hello-algo/graphs/contributors)的 GitHub ID 将在本书仓库、网页版和 PDF 版的主页上进行展示,以感谢他们对开源社区的无私奉献。
66

77
!!! success "开源的魅力"
88

9-
纸质书籍的两次印刷的间隔时间往往需要数年,内容更新非常不方便。
9+
纸质图书的两次印刷的间隔时间往往较久,内容更新非常不方便。
1010

11-
然而在本开源书中,内容更迭的时间被缩短至数日甚至几个小时。
11+
而在本开源书中,内容更迭的时间被缩短至数日甚至几个小时。
1212

1313
### 内容微调
1414

@@ -26,21 +26,21 @@
2626

2727
如果您有兴趣参与此开源项目,包括将代码翻译成其他编程语言、扩展文章内容等,那么需要实施以下 Pull Request 工作流程。
2828

29-
1. 登录 GitHub ,[本仓库](https://github.com/krahets/hello-algo) Fork 到个人账号下。
29+
1. 登录 GitHub ,将本书的[代码仓库](https://github.com/krahets/hello-algo) Fork 到个人账号下。
3030
2. 进入您的 Fork 仓库网页,使用 `git clone` 命令将仓库克隆至本地。
3131
3. 在本地进行内容创作,并进行完整测试,验证代码的正确性。
3232
4. 将本地所做更改 Commit ,然后 Push 至远程仓库。
3333
5. 刷新仓库网页,点击“Create pull request”按钮即可发起拉取请求。
3434

3535
### Docker 部署
3636

37-
`hello-algo` 根目录下,执行以下 Docker 脚本,即可在 `http://localhost:8000` 访问本项目
37+
`hello-algo` 根目录下,执行以下 Docker 脚本,即可在 `http://localhost:8000` 访问本项目
3838

3939
```shell
4040
docker-compose up -d
4141
```
4242

43-
使用以下命令即可删除部署
43+
使用以下命令即可删除部署
4444

4545
```shell
4646
docker-compose down
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
11
# 附录
22

3-
<div class="center-table" markdown>
4-
5-
![附录](../assets/covers/chapter_appendix.jpg){ width="600" }
6-
7-
</div>
3+
![附录](../assets/covers/chapter_appendix.jpg)
Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,68 @@
11
# 编程环境安装
22

3-
### VSCode
3+
## 安装 IDE
44

5-
本书推荐使用开源轻量的 VSCode 作为本地 IDE ,下载并安装 [VSCode](https://code.visualstudio.com/)
5+
推荐使用开源、轻量的 VS Code 作为本地集成开发环境(IDE)。访问 [VS Code 官网](https://code.visualstudio.com/),根据操作系统选择相应版本的 VS Code 进行下载和安装
66

7-
### Java 环境
7+
![从官网下载 VS Code](installation.assets/vscode_installation.png)
88

9-
1. 下载并安装 [OpenJDK](https://jdk.java.net/18/)(版本需满足 > JDK 9)。
10-
2. 在 VSCode 的插件市场中搜索 `java` ,安装 Extension Pack for Java 。
9+
VS Code 拥有强大的扩展包生态系统,支持大多数编程语言的运行和调试。以 Python 为例,安装“Python Extension Pack”扩展包之后,即可进行 Python 代码调试。安装步骤如下图所示。
1110

12-
### C/C++ 环境
11+
![安装 VS Code 扩展包](installation.assets/vscode_extension_installation.png)
1312

14-
1. Windows 系统需要安装 [MinGW](https://sourceforge.net/projects/mingw-w64/files/)[配置教程](https://blog.csdn.net/qq_33698226/article/details/129031241)),MacOS 自带 Clang 无须安装。
15-
2. 在 VSCode 的插件市场中搜索 `c++` ,安装 C/C++ Extension Pack 。
16-
3. (可选)打开 Settings 页面,搜索 `Clang_format_fallback Style` 代码格式化选项,设置为 `{ BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }`
13+
## 安装语言环境
1714

1815
### Python 环境
1916

20-
1. 下载并安装 [Miniconda3](https://docs.conda.io/en/latest/miniconda.html)
21-
2.VSCode 的插件市场中搜索 `python` ,安装 Python Extension Pack 。
17+
1. 下载并安装 [Miniconda3](https://docs.conda.io/en/latest/miniconda.html) ,需要 Python 3.10 或更新版本
18+
2.VS Code 的插件市场中搜索 `python` ,安装 Python Extension Pack 。
2219
3. (可选)在命令行输入 `pip install black` ,安装代码格式化工具。
2320

24-
### Go 环境
21+
### C/C++ 环境
2522

26-
1. 下载并安装 [go](https://go.dev/dl/)
27-
2.VSCode 的插件市场中搜索 `go` ,安装 Go
28-
3. 快捷键 `Ctrl + Shift + P` 呼出命令栏,输入 go ,选择 `Go: Install/Update Tools` ,全部勾选并安装即可
23+
1. Windows 系统需要安装 [MinGW](https://sourceforge.net/projects/mingw-w64/files/)[配置教程](https://blog.csdn.net/qq_33698226/article/details/129031241));MacOS 自带 Clang ,无须安装
24+
2.VS Code 的插件市场中搜索 `c++` ,安装 C/C++ Extension Pack
25+
3. (可选)打开 Settings 页面,搜索 `Clang_format_fallback Style` 代码格式化选项,设置为 `{ BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }`
2926

30-
### JavaScript 环境
27+
### Java 环境
3128

32-
1. 下载并安装 [node.js](https://nodejs.org/en/)
33-
2. 在 VSCode 的插件市场中搜索 `javascript` ,安装 JavaScript (ES6) code snippets 。
34-
3. (可选)在 VSCode 的插件市场中搜索 `Prettier` ,安装代码格式化工具。
29+
1. 下载并安装 [OpenJDK](https://jdk.java.net/18/)(版本需满足 > JDK 9)。
30+
2. 在 VS Code 的插件市场中搜索 `java` ,安装 Extension Pack for Java 。
3531

3632
### C# 环境
3733

38-
1. 下载并安装 [.Net 6.0](https://dotnet.microsoft.com/en-us/download)
39-
2.VSCode 的插件市场中搜索 `C# Dev Kit` ,安装 C# Dev Kit ([配置教程](https://code.visualstudio.com/docs/csharp/get-started))。
34+
1. 下载并安装 [.Net 8.0](https://dotnet.microsoft.com/en-us/download)
35+
2.VS Code 的插件市场中搜索 `C# Dev Kit` ,安装 C# Dev Kit ([配置教程](https://code.visualstudio.com/docs/csharp/get-started))。
4036
3. 也可使用 Visual Studio([安装教程](https://learn.microsoft.com/zh-cn/visualstudio/install/install-visual-studio?view=vs-2022))。
4137

38+
### Go 环境
39+
40+
1. 下载并安装 [go](https://go.dev/dl/)
41+
2. 在 VS Code 的插件市场中搜索 `go` ,安装 Go 。
42+
3. 按快捷键 `Ctrl + Shift + P` 呼出命令栏,输入 go ,选择 `Go: Install/Update Tools` ,全部勾选并安装即可。
43+
4244
### Swift 环境
4345

44-
1. 下载并安装 [Swift](https://www.swift.org/download/)
45-
2. 在 VSCode 的插件市场中搜索 `swift` ,安装 [Swift for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang)
46+
1. 下载并安装 [Swift](https://www.swift.org/download/)
47+
2. 在 VS Code 的插件市场中搜索 `swift` ,安装 [Swift for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang)
48+
49+
### JavaScript 环境
50+
51+
1. 下载并安装 [Node.js](https://nodejs.org/en/)
52+
2. (可选)在 VS Code 的插件市场中搜索 `Prettier` ,安装代码格式化工具。
53+
54+
### TypeScript 环境
55+
56+
1. 同 JavaScript 环境安装步骤。
57+
2. 安装 [TypeScript Execute (tsx)](https://github.com/privatenumber/tsx?tab=readme-ov-file#global-installation)
58+
3. 在 VS Code 的插件市场中搜索 `typescript` ,安装 [Pretty TypeScript Errors](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors)
4659

4760
### Dart 环境
4861

4962
1. 下载并安装 [Dart](https://dart.dev/get-dart)
50-
2.VSCode 的插件市场中搜索 `dart` ,安装 [Dart](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-code)
63+
2.VS Code 的插件市场中搜索 `dart` ,安装 [Dart](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-code)
5164

5265
### Rust 环境
5366

54-
1. 下载并安装 [Rust](https://www.rust-lang.org/tools/install)
55-
2.VSCode 的插件市场中搜索 `rust` ,安装 [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
67+
1. 下载并安装 [Rust](https://www.rust-lang.org/tools/install)
68+
2.VS Code 的插件市场中搜索 `rust` ,安装 [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# 术语表
2+
3+
下表列出了书中出现的重要术语,值得注意以下几点。
4+
5+
- 建议记住名词的英文叫法,以便阅读英文文献。
6+
- 部分名词在简体中文和繁体中文下的叫法不同。
7+
8+
<p align="center"> 表 <id> &nbsp; 数据结构与算法的重要名词 </p>
9+
10+
| English | 简体中文 | 繁体中文 |
11+
| ------------------------------ | -------------- | -------------- |
12+
| algorithm | 算法 | 演算法 |
13+
| data structure | 数据结构 | 資料結構 |
14+
| code | 代码 | 程式碼 |
15+
| file | 文件 | 檔案 |
16+
| function | 函数 | 函式 |
17+
| method | 方法 | 方法 |
18+
| variable | 变量 | 變數 |
19+
| asymptotic complexity analysis | 渐近复杂度分析 | 漸近複雜度分析 |
20+
| time complexity | 时间复杂度 | 時間複雜度 |
21+
| space complexity | 空间复杂度 | 空間複雜度 |
22+
| loop | 循环 | 迴圈 |
23+
| iteration | 迭代 | 迭代 |
24+
| recursion | 递归 | 遞迴 |
25+
| tail recursion | 尾递归 | 尾遞迴 |
26+
| recursion tree | 递归树 | 遞迴樹 |
27+
| big-$O$ notation | 大 $O$ 记号 | 大 $O$ 記號 |
28+
| asymptotic upper bound | 渐近上界 | 漸近上界 |
29+
| sign-magnitude | 原码 | 原碼 |
30+
| 1’s complement | 反码 | 一補數 |
31+
| 2’s complement | 补码 | 二補數 |
32+
| array | 数组 | 陣列 |
33+
| index | 索引 | 索引 |
34+
| linked list | 链表 | 鏈結串列 |
35+
| linked list node, list node | 链表节点 | 鏈結串列節點 |
36+
| head node | 头节点 | 頭節點 |
37+
| tail node | 尾节点 | 尾節點 |
38+
| list | 列表 | 串列 |
39+
| dynamic array | 动态数组 | 動態陣列 |
40+
| hard disk | 硬盘 | 硬碟 |
41+
| random-access memory (RAM) | 内存 | 記憶體 |
42+
| cache memory | 缓存 | 快取 |
43+
| cache miss | 缓存未命中 | 快取未命中 |
44+
| cache hit rate | 缓存命中率 | 快取命中率 |
45+
| stack || 堆疊 |
46+
| top of the stack | 栈顶 | 堆疊頂 |
47+
| bottom of the stack | 栈底 | 堆疊底 |
48+
| queue | 队列 | 佇列 |
49+
| double-ended queue | 双向队列 | 雙向佇列 |
50+
| front of the queue | 队首 | 佇列首 |
51+
| rear of the queue | 队尾 | 佇列尾 |
52+
| hash table | 哈希表 | 雜湊表 |
53+
| hash set | 哈希集合 | 雜湊集合 |
54+
| bucket |||
55+
| hash function | 哈希函数 | 雜湊函式 |
56+
| hash collision | 哈希冲突 | 雜湊衝突 |
57+
| load factor | 负载因子 | 負載因子 |
58+
| separate chaining | 链式地址 | 鏈結位址 |
59+
| open addressing | 开放寻址 | 開放定址 |
60+
| linear probing | 线性探测 | 線性探查 |
61+
| lazy deletion | 懒删除 | 懶刪除 |
62+
| binary tree | 二叉树 | 二元樹 |
63+
| tree node | 树节点 | 樹節點 |
64+
| left-child node | 左子节点 | 左子節點 |
65+
| right-child node | 右子节点 | 右子節點 |
66+
| parent node | 父节点 | 父節點 |
67+
| left subtree | 左子树 | 左子樹 |
68+
| right subtree | 右子树 | 右子樹 |
69+
| root node | 根节点 | 根節點 |
70+
| leaf node | 叶节点 | 葉節點 |
71+
| edge |||
72+
| level |||
73+
| degree |||
74+
| height | 高度 | 高度 |
75+
| depth | 深度 | 深度 |
76+
| perfect binary tree | 完美二叉树 | 完美二元樹 |
77+
| complete binary tree | 完全二叉树 | 完全二元樹 |
78+
| full binary tree | 完满二叉树 | 完滿二元樹 |
79+
| balanced binary tree | 平衡二叉树 | 平衡二元樹 |
80+
| binary search tree | 二叉搜索树 | 二元搜尋樹 |
81+
| AVL tree | AVL 树 | AVL 樹 |
82+
| red-black tree | 红黑树 | 紅黑樹 |
83+
| level-order traversal | 层序遍历 | 層序走訪 |
84+
| breadth-first traversal | 广度优先遍历 | 廣度優先走訪 |
85+
| depth-first traversal | 深度优先遍历 | 深度優先走訪 |
86+
| binary search tree | 二叉搜索树 | 二元搜尋樹 |
87+
| balanced binary search tree | 平衡二叉搜索树 | 平衡二元搜尋樹 |
88+
| balance factor | 平衡因子 | 平衡因子 |
89+
| heap || 堆積 |
90+
| max heap | 大顶堆 | 大頂堆積 |
91+
| min heap | 小顶堆 | 小頂堆積 |
92+
| priority queue | 优先队列 | 優先佇列 |
93+
| heapify | 堆化 | 堆積化 |
94+
| top-$k$ problem | Top-$k$ 问题 | Top-$k$ 問題 |
95+
| graph |||
96+
| vertex | 顶点 | 頂點 |
97+
| undirected graph | 无向图 | 無向圖 |
98+
| directed graph | 有向图 | 有向圖 |
99+
| connected graph | 连通图 | 連通圖 |
100+
| disconnected graph | 非连通图 | 非連通圖 |
101+
| weighted graph | 有权图 | 有權圖 |
102+
| adjacency | 邻接 | 鄰接 |
103+
| path | 路径 | 路徑 |
104+
| in-degree | 入度 | 入度 |
105+
| out-degree | 出度 | 出度 |
106+
| adjacency matrix | 邻接矩阵 | 鄰接矩陣 |
107+
| adjacency list | 邻接表 | 鄰接表 |
108+
| breadth-first search | 广度优先搜索 | 廣度優先搜尋 |
109+
| depth-first search | 深度优先搜索 | 深度優先搜尋 |
110+
| binary search | 二分查找 | 二分搜尋 |
111+
| searching algorithm | 搜索算法 | 搜尋演算法 |
112+
| sorting algorithm | 排序算法 | 排序演算法 |
113+
| selection sort | 选择排序 | 選擇排序 |
114+
| bubble sort | 冒泡排序 | 泡沫排序 |
115+
| insertion sort | 插入排序 | 插入排序 |
116+
| quick sort | 快速排序 | 快速排序 |
117+
| merge sort | 归并排序 | 合併排序 |
118+
| heap sort | 堆排序 | 堆積排序 |
119+
| bucket sort | 桶排序 | 桶排序 |
120+
| counting sort | 计数排序 | 計數排序 |
121+
| radix sort | 基数排序 | 基數排序 |
122+
| divide and conquer | 分治 | 分治 |
123+
| hanota problem | 汉诺塔问题 | 河內塔問題 |
124+
| backtracking algorithm | 回溯算法 | 回溯演算法 |
125+
| constraint | 约束 | 約束 |
126+
| solution |||
127+
| state | 状态 | 狀態 |
128+
| pruning | 剪枝 | 剪枝 |
129+
| permutations problem | 全排列问题 | 全排列問題 |
130+
| subset-sum problem | 子集和问题 | 子集合問題 |
131+
| $n$-queens problem | $n$ 皇后问题 | $n$ 皇后問題 |
132+
| dynamic programming | 动态规划 | 動態規劃 |
133+
| initial state | 初始状态 | 初始狀態 |
134+
| state-transition equation | 状态转移方程 | 狀態轉移方程 |
135+
| knapsack problem | 背包问题 | 背包問題 |
136+
| edit distance problem | 编辑距离问题 | 編輯距離問題 |
137+
| greedy algorithm | 贪心算法 | 貪婪演算法 |

0 commit comments

Comments
 (0)