目录
一、基础理论
- 基本原理
通过哈希函数(算法) 从数据结构中快速的找到目标元素。
- 三种常见的哈希结构(数据结构)
- 数组:key——>索引
- 集合(set):key——>value
- 映射(map):pair:{key:value}…
- 哈希表的主要作用
快速查找(访问)其中的元素,判断哈希结构中是否有目标元素。
- 选对数据结构的重要性
在编写算法解决问题时,选用合适的数据结构可以使算法更高效。
二、数组作为哈希表
1.代表题目及其题解
2.使用数组做哈希表的关键点
- 数组天生有哈希表的特点:通过索引可以快速访问元素。
- 根据数组快速访问元素的特点,把key映射到相应的索引,便可以实现哈希表的主要功能。
- 数组要有明确的大小,且可以把key按规律映射到数组上。例如:‘a’——>0、‘b’——>1…
- 当题目中所要存储的元素没有明确大小时,应选用其他哈希结构。
三、集合作为哈希表
1.代表题目及其题解
2.使用集合做哈希表的关键点
- 集合是已经实现好的哈希结构,直接使用集合快速查询判断有无目标元素即可。
- 集合中的
unordered_set
可以达成去重的效果。
四、映射作为哈希表
1.代表题目及其题解
2.使用映射作为哈希表的关键点
- 映射以pair(key:value)的方式存储数据。
- 要根据题意确定好key和value分别存储什么。
五、其他
1.代表题目及其题解
2.解法
- 可以使用哈希表的特性来解决。(但不推荐)
- 更推荐使用双指针法,可以提高效率。
六、思维导图
七、总结
- 我们常用哈希表来快速访问元素、快速判断是否包含目标元素。
- 哈希表有三类:array、set、map
- 三种哈希结构各有特点:array必须要求明确的大小、set不需要有明确大小、map以pair的形式存储数据。
- 我们应根据不同情况和三种哈希结构的特点选用最合适的哈希结构。