Finetune the chapter of hashing,

divide and conquer, backtracking, tree
This commit is contained in:
krahets
2023-07-24 03:04:55 +08:00
parent 9d56622c75
commit 17f995b432
16 changed files with 258 additions and 223 deletions

View File

@@ -2,7 +2,7 @@
- 数组和链表是两种基本数据结构,分别代表数据在计算机内存中的连续空间存储和离散空间存储方式。两者的优缺点呈现出互补的特性。
- 数组支持随机访问、占用内存较少;但插入和删除元素效率低,且初始化后长度不可变。
- 链表通过更改指针实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占用内存较多。常见的链表类型包括单向链表、循环链表、双向链表。
- 链表通过更改引用(指针实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占用内存较多。常见的链表类型包括单向链表、循环链表、双向链表。
- 动态数组,又称列表,是基于数组实现的一种数据结构。它保留了数组的优势,同时可以灵活调整长度。列表的出现极大地提高了数组的易用性,但可能导致部分内存空间浪费。
- 下表总结并对比了数组与链表的各项特性与操作效率。
@@ -36,7 +36,7 @@
!!! question "为什么数组会强调要求相同类型的元素,而在链表中却没有强调同类型呢?"
链表由结点组成,结点之间指针连接,各个结点可以存储不同类型的数据,例如 int, double, string, object 等。
链表由结点组成,结点之间通过引用(指针连接,各个结点可以存储不同类型的数据,例如 int, double, string, object 等。
相对地,数组元素则必须是相同类型的,这样才能通过计算偏移量来获取对应元素位置。例如,如果数组同时包含 int 和 long 两种类型,单个元素分别占用 4 bytes 和 8 bytes ,那么此时就不能用以下公式计算偏移量了,因为数组中包含了两种 `elementLength`