Skip to content

Commit

Permalink
Format code and docs.
Browse files Browse the repository at this point in the history
  • Loading branch information
krahets committed Oct 24, 2023
1 parent d639d94 commit 17252b5
Show file tree
Hide file tree
Showing 11 changed files with 42 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ function editDistanceDP(s, t) {
dp[i][j] = dp[i - 1][j - 1];
} else {
// 最少编辑步数 = 插入、删除、替换这三种操作的最少编辑步数 + 1
dp[i][j] = Math.min(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]) + 1
dp[i][j] =
Math.min(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]) + 1;
}
}
}
Expand Down
12 changes: 2 additions & 10 deletions codes/python/chapter_tree/avl_tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,16 +184,8 @@ def test_remove(tree: AVLTree, val: int):

# 插入节点
# 请关注插入节点后,AVL 树是如何保持平衡的
test_insert(avl_tree, 1)
test_insert(avl_tree, 2)
test_insert(avl_tree, 3)
test_insert(avl_tree, 4)
test_insert(avl_tree, 5)
test_insert(avl_tree, 8)
test_insert(avl_tree, 7)
test_insert(avl_tree, 9)
test_insert(avl_tree, 10)
test_insert(avl_tree, 6)
for val in [1, 2, 3, 4, 5, 8, 7, 9, 10, 6]:
test_insert(avl_tree, val)

# 插入重复节点
test_insert(avl_tree, 7)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,8 @@ function editDistanceDP(s: string, t: string): number {
dp[i][j] = dp[i - 1][j - 1];
} else {
// 最少编辑步数 = 插入、删除、替换这三种操作的最少编辑步数 + 1
dp[i][j] = Math.min(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]) + 1
dp[i][j] =
Math.min(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]) + 1;
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions docs/chapter_divide_and_conquer/build_binary_tree_problem.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

!!! question

给定一个二叉树的前序遍历 `preorder` 和中序遍历 `inorder` ,请从中构建二叉树,返回二叉树的根节点。
给定一个二叉树的前序遍历 `preorder` 和中序遍历 `inorder` ,请从中构建二叉树,返回二叉树的根节点。假设二叉树中没有值重复的节点。

![构建二叉树的示例数据](build_binary_tree_problem.assets/build_tree_example.png)

Expand Down Expand Up @@ -44,10 +44,10 @@
<p align="center"> 表 <id> &nbsp; 根节点和子树在前序和中序遍历中的索引 </p>

| | 根节点在 `preorder` 中的索引 | 子树在 `inorder` 中的索引区间 |
| ------ | -------------------------------- | ----------------------------- |
| 当前树 | $i$ | $[l, r]$ |
| 左子树 | $i + 1$ | $[l, m-1]$ |
| 右子树 | $i + 1 + (m - l)$ | $[m+1, r]$ |
| ------ | ---------------------------- | ----------------------------- |
| 当前树 | $i$ | $[l, r]$ |
| 左子树 | $i + 1$ | $[l, m-1]$ |
| 右子树 | $i + 1 + (m - l)$ | $[m+1, r]$ |

请注意,右子树根节点索引中的 $(m-l)$ 的含义是“左子树的节点数量”,建议配合下图理解。

Expand Down
10 changes: 5 additions & 5 deletions docs/chapter_graph/graph.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ $$

<p align="center"> 表 <id> &nbsp; 现实生活中常见的图 </p>

| | 顶点 || 图计算问题 |
| ------ | ---- | --------------- | ------------ |
| 社交网络 | 用户 | 好友关系 | 潜在好友推荐 |
| 地铁线路 | 站点 | 站点间的连通性 | 最短路线推荐 |
| 太阳系 | 星体 | 星体间的万有引力作用 | 行星轨道计算 |
| | 顶点 | | 图计算问题 |
| -------- | ---- | -------------------- | ------------ |
| 社交网络 | 用户 | 好友关系 | 潜在好友推荐 |
| 地铁线路 | 站点 | 站点间的连通性 | 最短路线推荐 |
| 太阳系 | 星体 | 星体间的万有引力作用 | 行星轨道计算 |
14 changes: 7 additions & 7 deletions docs/chapter_heap/heap.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@

<p align="center"> 表 <id> &nbsp; 堆的操作效率 </p>

| 方法名 | 描述 | 时间复杂度 |
| --------- | ------------------------------------------ | ----------- |
| push() | 元素入堆 | $O(\log n)$ |
| pop() | 堆顶元素出堆 | $O(\log n)$ |
| peek() | 访问堆顶元素(大 / 小顶堆分别为最大 / 小值) | $O(1)$ |
| size() | 获取堆的元素数量 | $O(1)$ |
| isEmpty() | 判断堆是否为空 | $O(1)$ |
| 方法名 | 描述 | 时间复杂度 |
| --------- | -------------------------------------------- | ----------- |
| push() | 元素入堆 | $O(\log n)$ |
| pop() | 堆顶元素出堆 | $O(\log n)$ |
| peek() | 访问堆顶元素(大 / 小顶堆分别为最大 / 小值) | $O(1)$ |
| size() | 获取堆的元素数量 | $O(1)$ |
| isEmpty() | 判断堆是否为空 | $O(1)$ |

在实际应用中,我们可以直接使用编程语言提供的堆类(或优先队列类)。

Expand Down
2 changes: 1 addition & 1 deletion docs/chapter_introduction/what_is_dsa.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@

<p align="center"> 表 <id> &nbsp; 将数据结构与算法类比为积木 </p>

| 数据结构与算法 | 拼装积木 |
| 数据结构与算法 | 拼装积木 |
| -------------- | ---------------------------------------- |
| 输入数据 | 未拼装的积木 |
| 数据结构 | 积木组织形式,包括形状、大小、连接方式等 |
Expand Down
8 changes: 4 additions & 4 deletions docs/chapter_stack_and_queue/deque.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@

<p align="center"> 表 <id> &nbsp; 双向队列操作效率 </p>

| 方法名 | 描述 | 时间复杂度 |
| ----------- | -------------- | ---------- |
| pushFirst() | 将元素添加至队首 | $O(1)$ |
| pushLast() | 将元素添加至队尾 | $O(1)$ |
| 方法名 | 描述 | 时间复杂度 |
| ----------- | ---------------- | ---------- |
| pushFirst() | 将元素添加至队首 | $O(1)$ |
| pushLast() | 将元素添加至队尾 | $O(1)$ |
| popFirst() | 删除队首元素 | $O(1)$ |
| popLast() | 删除队尾元素 | $O(1)$ |
| peekFirst() | 访问队首元素 | $O(1)$ |
Expand Down
10 changes: 5 additions & 5 deletions docs/chapter_stack_and_queue/queue.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@

<p align="center"> 表 <id> &nbsp; 队列操作效率 </p>

| 方法名 | 描述 | 时间复杂度 |
| --------- | -------------------------- | -------- |
| push() | 元素入队,即将元素添加至队尾 | $O(1)$ |
| pop() | 队首元素出队 | $O(1)$ |
| peek() | 访问队首元素 | $O(1)$ |
| 方法名 | 描述 | 时间复杂度 |
| ------ | ---------------------------- | ---------- |
| push() | 元素入队,即将元素添加至队尾 | $O(1)$ |
| pop() | 队首元素出队 | $O(1)$ |
| peek() | 访问队首元素 | $O(1)$ |

我们可以直接使用编程语言中现成的队列类。

Expand Down
10 changes: 5 additions & 5 deletions docs/chapter_stack_and_queue/stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@

<p align="center"> 表 <id> &nbsp; 栈的操作效率 </p>

| 方法 | 描述 | 时间复杂度 |
| --------- | ---------------------- | ---------- |
| push() | 元素入栈(添加至栈顶) | $O(1)$ |
| pop() | 栈顶元素出栈 | $O(1)$ |
| peek() | 访问栈顶元素 | $O(1)$ |
| 方法 | 描述 | 时间复杂度 |
| ------ | ---------------------- | ---------- |
| push() | 元素入栈(添加至栈顶) | $O(1)$ |
| pop() | 栈顶元素出栈 | $O(1)$ |
| peek() | 访问栈顶元素 | $O(1)$ |

通常情况下,我们可以直接使用编程语言内置的栈类。然而,某些语言可能没有专门提供栈类,这时我们可以将该语言的“数组”或“链表”视作栈来使用,并在程序逻辑上忽略与栈无关的操作。

Expand Down
8 changes: 4 additions & 4 deletions docs/chapter_tree/avl_tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -295,12 +295,12 @@ AVL 树的特点在于“旋转”操作,它能够在不影响二叉树的中

<p align="center"> 表 <id> &nbsp; 四种旋转情况的选择条件 </p>

| 失衡节点的平衡因子 | 子节点的平衡因子 | 应采用的旋转方法 |
| ---------------- | ---------------- | ---------------- |
| 失衡节点的平衡因子 | 子节点的平衡因子 | 应采用的旋转方法 |
| ------------------- | ---------------- | ---------------- |
| $> 1$ (即左偏树) | $\geq 0$ | 右旋 |
| $> 1$ (即左偏树) | $<0$ | 先左旋后右旋 |
| $< -1$ (即右偏树) | $\leq 0$ | 左旋 |
| $< -1$ (即右偏树) | $>0$ | 先右旋后左旋 |
| $< -1$ (即右偏树) | $\leq 0$ | 左旋 |
| $< -1$ (即右偏树) | $>0$ | 先右旋后左旋 |

为了便于使用,我们将旋转操作封装成一个函数。**有了这个函数,我们就能对各种失衡情况进行旋转,使失衡节点重新恢复平衡**

Expand Down

0 comments on commit 17252b5

Please sign in to comment.