Skip to content

Commit

Permalink
fill
Browse files Browse the repository at this point in the history
  • Loading branch information
haolin3 committed Aug 10, 2020
1 parent feee540 commit a5c381f
Show file tree
Hide file tree
Showing 17 changed files with 79 additions and 4 deletions.
5 changes: 4 additions & 1 deletion Day 01-17/01.数据结构和算法的重要性.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,11 @@ struct 水煮肉片 {
- 合并两个有序数组
- 重新排列数组中的正值和负值

现在,我们给出一个完整的关于数组的学习视频
现在,我们给出一系列的关于数组的学习视频

[小甲鱼数组学习-1](https://www.youtube.com/watch?v=13bNE3pGcIg)
[小甲鱼数组学习-2](https://www.youtube.com/watch?v=Msm84syHpHQ)
[小甲鱼数组学习-3](https://www.youtube.com/watch?v=QYdHN67R1hk)

---

Expand Down
5 changes: 5 additions & 0 deletions Day 01-17/02.链表.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,11 @@ end ReverseTraversal

O(n)

### 相关学习资料

[链表数据结构学习](https://www.youtube.com/watch?v=Vw7f6NqHCJk)
[链表刷题找工作](https://www.youtube.com/watch?v=-UBiYuIVErM&list=PLLuMmzMTgVK6a-2aAwPieEIIuIJY6JTSq)

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Linked_list)
Expand Down
7 changes: 7 additions & 0 deletions Day 01-17/03.双向链表.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ end Reverse Traversal

O(n)

### 相关学习资料

[双向链表学习-1](https://www.youtube.com/watch?v=J6j_5oFqvgs)
[双向链表学习-2](https://www.youtube.com/watch?v=NXSq1jexwGE)
[双向链表学习-3](https://www.youtube.com/watch?v=IyJaOlxD_Lc)
[双向链表学习-4](https://www.youtube.com/watch?v=WYdaztL3l7k)

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Doubly_linked_list)
Expand Down
5 changes: 5 additions & 0 deletions Day 01-17/04.队列.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@

![Queue](https://upload.wikimedia.org/wikipedia/commons/5/52/Data_Queue.svg)

## 队列学习资料

[栈和队列]](https://www.youtube.com/watch?v=KaMUAVCf1Rc)
[为什么要学习消息队列](https://www.youtube.com/watch?v=KoccSL_56sM)

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Queue_(abstract_data_type))
Expand Down
4 changes: 4 additions & 0 deletions Day 01-17/05.栈.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@

![Stack](https://upload.wikimedia.org/wikipedia/commons/b/b4/Lifo_stack.png)

### 学习资料

[栈和队列]](https://www.youtube.com/watch?v=KaMUAVCf1Rc)

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Stack_(abstract_data_type))
Expand Down
4 changes: 4 additions & 0 deletions Day 01-17/06.哈希表.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@

![Hash Collision](https://upload.wikimedia.org/wikipedia/commons/d/d0/Hash_table_5_0_1_1_1_1_1_LL.svg)

### 学习资料

[哈希表学习基础](https://www.youtube.com/watch?v=CaF_RipLLh4)

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Hash_table)
Expand Down
4 changes: 4 additions & 0 deletions Day 01-17/07.堆.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@

在堆“顶部”的没有父级节点的节点,被称之为根节点。

### 学习资料

[堆结构讲解](https://www.youtube.com/watch?v=j-DqQcNPGbE)

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Heap_(data_structure))
Expand Down
3 changes: 3 additions & 0 deletions Day 01-17/08.优先队列.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@

正如列表可以用链表或数组实现一样,优先队列可以用堆或各种其他方法实现,例如无序数组。

### 优先队列学习资料

[优先队列讲解](https://www.youtube.com/watch?v=wTAoOhytiQs)

## 参考

Expand Down
4 changes: 4 additions & 0 deletions Day 01-17/09.字典树.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@

![Trie](https://upload.wikimedia.org/wikipedia/commons/b/be/Trie_example.svg)

### 学习资料

[什么是字典树](https://www.youtube.com/watch?v=GCGolin7Ffk)

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Trie)
Expand Down
4 changes: 4 additions & 0 deletions Day 01-17/10.树.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@

![Tree](https://upload.wikimedia.org/wikipedia/commons/f/f7/Binary_tree.svg)

### 学习资料

[Data structures: Introduction to Trees](https://www.youtube.com/watch?v=qH6yxkw0u78)

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Tree_(data_structure))
Expand Down
6 changes: 5 additions & 1 deletion Day 01-17/11.二叉搜索树.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,8 @@
二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为{\displaystyle O(\log n)}O(\log n)。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、多重集、关联数组等。

![BST](https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%85%83%E6%90%9C%E5%B0%8B%E6%A8%B9#/media/File:Binary_search_tree.svg)
![BST](https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%85%83%E6%90%9C%E5%B0%8B%E6%A8%B9#/media/File:Binary_search_tree.svg)

### 相关学习资料

[二叉搜索树](https://www.youtube.com/watch?v=GtflM7nUrU0)
6 changes: 6 additions & 0 deletions Day 01-17/12.AVL树.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,9 @@
> 在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是{\displaystyle O(\log
{n})}O(\log{n})。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。


### 学习资料

[AVL Tree](https://www.youtube.com/watch?v=jDM6_TnYIqE)
[AVL 平衡二叉树](https://www.youtube.com/watch?v=NAiBAph8cGk)

4 changes: 3 additions & 1 deletion Day 01-17/13.红黑树.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# 红黑树

> 红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树的结构复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中高效:它可以在{\displaystyle {\text{O}}(\log n)}{\displaystyle {\text{O}}(\log n)}时间内完成查找、插入和删除,这里的{\displaystyle n}n是树中元素的数目。
> 红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树的结构复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中高效:它可以在{\displaystyle {\text{O}}(\log n)}{\displaystyle {\text{O}}(\log n)}时间内完成查找、插入和删除,这里的{\displaystyle n}n是树中元素的数目。
[红黑树讲解](https://www.youtube.com/watch?v=D0sTAhcSy0s)
1 change: 1 addition & 0 deletions Day 01-17/14.树状数组.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@

> 其初衷是解决数据压缩里的累积频率(Cumulative Frequency)的计算问题,现多用于高效计算数列的前缀和, 区间和。它可以以{\displaystyle O(\log n)}O(\log n)的时间得到任意前缀和{\displaystyle \sum _{i=1}^{j}A[i],1<=j<=N},并同时支持在{\displaystyle O(\log n)}O(\log n)时间内支持动态单点值的修改。空间复杂度{\displaystyle O(n)}O(n)。
[树状数组讲解](https://www.youtube.com/watch?v=v_wj_mOAlig)
4 changes: 3 additions & 1 deletion Day 01-17/15.图.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@

如果顶点对之间的边是有权重的,该图可称为加权图。

![Graph](https://www.tutorialspoint.com/data_structures_algorithms/images/graph.jpg)

### 相关学习资料

![Graph](https://www.tutorialspoint.com/data_structures_algorithms/images/graph.jpg)
[数据结构-图的串讲](https://www.youtube.com/watch?v=W6vRz1yzCUM&t=106s)

## 参考

Expand Down
3 changes: 3 additions & 0 deletions Day 01-17/16.并查集.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ Union:将两个子集合并成同一个集合。

为了更加精确的定义这些方法,需要定义如何表示集合。一种常用的策略是为每个集合选定一个固定的元素,称为代表,以表示整个集合。接着,Find(x) 返回x所属集合的代表,而Union使用两个集合的代表作为参数。

### 学习资料

[并查集讲解](https://www.youtube.com/watch?v=YKE4Vd1ysPI)
14 changes: 14 additions & 0 deletions Day 01-17/17.布隆过滤器.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,16 @@
# 布隆过滤器

> 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。
### 理论基础

如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点。这样一来,我们只要看看这个点是不是1就可以知道集合中有没有它了。这就是布隆过滤器的基本思想。

### 优点

相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。另外, Hash函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。
布隆过滤器可以表示全集,其它任何数据结构都不能。

### 学习资料

[理论讲解](https://www.youtube.com/watch?v=skmTPIKIks4)

0 comments on commit a5c381f

Please sign in to comment.