mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-27 00:56:29 +08:00
build
This commit is contained in:
parent
221bec3ea3
commit
fca420d938
12 changed files with 64 additions and 15 deletions
|
@ -861,7 +861,7 @@ comments: true
|
||||||
为了加深对列表工作原理的理解,我们尝试实现一个简易版列表,包括以下三个重点设计。
|
为了加深对列表工作原理的理解,我们尝试实现一个简易版列表,包括以下三个重点设计。
|
||||||
|
|
||||||
- **初始容量**:选取一个合理的数组初始容量。在本示例中,我们选择 10 作为初始容量。
|
- **初始容量**:选取一个合理的数组初始容量。在本示例中,我们选择 10 作为初始容量。
|
||||||
- **数量记录**:声明一个变量 size,用于记录列表当前元素数量,并随着元素插入和删除实时更新。根据此变量,我们可以定位列表尾部,以及判断是否需要扩容。
|
- **数量记录**:声明一个变量 `size` ,用于记录列表当前元素数量,并随着元素插入和删除实时更新。根据此变量,我们可以定位列表尾部,以及判断是否需要扩容。
|
||||||
- **扩容机制**:若插入元素时列表容量已满,则需要进行扩容。首先根据扩容倍数创建一个更大的数组,再将当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。
|
- **扩容机制**:若插入元素时列表容量已满,则需要进行扩容。首先根据扩容倍数创建一个更大的数组,再将当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。
|
||||||
|
|
||||||
=== "Python"
|
=== "Python"
|
||||||
|
|
|
@ -86,7 +86,7 @@ $$
|
||||||
|
|
||||||
**第三步:确定边界条件和状态转移顺序**
|
**第三步:确定边界条件和状态转移顺序**
|
||||||
|
|
||||||
在本题中,处在首行的状态只能向右转移,首列状态只能向下转移,因此首行 $i = 0$ 和首列 $j = 0$ 是边界条件。
|
在本题中,首行的状态只能从其左边的状态得来,首列的状态只能从其上边的状态得来,因此首行 $i = 0$ 和首列 $j = 0$ 是边界条件。
|
||||||
|
|
||||||
如图 14-13 所示,由于每个格子是由其左方格子和上方格子转移而来,因此我们使用采用循环来遍历矩阵,外循环遍历各行、内循环遍历各列。
|
如图 14-13 所示,由于每个格子是由其左方格子和上方格子转移而来,因此我们使用采用循环来遍历矩阵,外循环遍历各行、内循环遍历各列。
|
||||||
|
|
||||||
|
|
|
@ -1164,7 +1164,7 @@ comments: true
|
||||||
def __init__(self, edges: list[list[Vertex]]):
|
def __init__(self, edges: list[list[Vertex]]):
|
||||||
"""构造方法"""
|
"""构造方法"""
|
||||||
# 邻接表,key: 顶点,value:该顶点的所有邻接顶点
|
# 邻接表,key: 顶点,value:该顶点的所有邻接顶点
|
||||||
self.adj_list = dict[Vertex, Vertex]()
|
self.adj_list = dict[Vertex, list[Vertex]]()
|
||||||
# 添加所有顶点和边
|
# 添加所有顶点和边
|
||||||
for edge in edges:
|
for edge in edges:
|
||||||
self.add_vertex(edge[0])
|
self.add_vertex(edge[0])
|
||||||
|
|
|
@ -311,7 +311,33 @@ comments: true
|
||||||
=== "Rust"
|
=== "Rust"
|
||||||
|
|
||||||
```rust title="deque.rs"
|
```rust title="deque.rs"
|
||||||
|
/* 初始化双向队列 */
|
||||||
|
let mut deque: VecDeque<u32> = VecDeque::new();
|
||||||
|
|
||||||
|
/* 元素入队 */
|
||||||
|
deque.push_back(2); // 添加至队尾
|
||||||
|
deque.push_back(5);
|
||||||
|
deque.push_back(4);
|
||||||
|
deque.push_front(3); // 添加至队首
|
||||||
|
deque.push_front(1);
|
||||||
|
|
||||||
|
/* 访问元素 */
|
||||||
|
if let Some(front) = deque.front() { // 队首元素
|
||||||
|
}
|
||||||
|
if let Some(rear) = deque.back() { // 队尾元素
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 元素出队 */
|
||||||
|
if let Some(pop_front) = deque.pop_front() { // 队首元素出队
|
||||||
|
}
|
||||||
|
if let Some(pop_rear) = deque.pop_back() { // 队尾元素出队
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 获取双向队列的长度 */
|
||||||
|
let size = deque.len();
|
||||||
|
|
||||||
|
/* 判断双向队列是否为空 */
|
||||||
|
let is_empty = deque.is_empty();
|
||||||
```
|
```
|
||||||
|
|
||||||
=== "C"
|
=== "C"
|
||||||
|
@ -1394,7 +1420,7 @@ comments: true
|
||||||
void push(int num, bool isFront) {
|
void push(int num, bool isFront) {
|
||||||
final ListNode node = ListNode(num);
|
final ListNode node = ListNode(num);
|
||||||
if (isEmpty()) {
|
if (isEmpty()) {
|
||||||
// 若链表为空,则令 _front,_rear 都指向 node
|
// 若链表为空,则令 _front 和 _rear 都指向 node
|
||||||
_front = _rear = node;
|
_front = _rear = node;
|
||||||
} else if (isFront) {
|
} else if (isFront) {
|
||||||
// 队首入队操作
|
// 队首入队操作
|
||||||
|
|
|
@ -278,7 +278,30 @@ comments: true
|
||||||
=== "Rust"
|
=== "Rust"
|
||||||
|
|
||||||
```rust title="queue.rs"
|
```rust title="queue.rs"
|
||||||
|
/* 初始化双向队列 */
|
||||||
|
// 在 Rust 中使用双向队列作为普通队列来使用
|
||||||
|
let mut deque: VecDeque<u32> = VecDeque::new();
|
||||||
|
|
||||||
|
/* 元素入队 */
|
||||||
|
deque.push_back(1);
|
||||||
|
deque.push_back(3);
|
||||||
|
deque.push_back(2);
|
||||||
|
deque.push_back(5);
|
||||||
|
deque.push_back(4);
|
||||||
|
|
||||||
|
/* 访问队首元素 */
|
||||||
|
if let Some(front) = deque.front() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 元素出队 */
|
||||||
|
if let Some(pop) = deque.pop_front() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 获取队列的长度 */
|
||||||
|
let size = deque.len();
|
||||||
|
|
||||||
|
/* 判断队列是否为空 */
|
||||||
|
let is_empty = deque.is_empty();
|
||||||
```
|
```
|
||||||
|
|
||||||
=== "C"
|
=== "C"
|
||||||
|
|
Loading…
Reference in a new issue