Day4 - Hash Table Pre-Knowledge
Day4 - 哈希表前置知识
1. 哈希表介绍
1.1. 哈希映射
哈希表(又称为哈希映射)是一种可以将键映射到值的数据结构。哈希表使用哈希函数计算出一个哈希码,该哈希码指向一个槽位,从中可以找到所需的值。
1.2. 哈希表原理
使用哈希表是最常用的空间换时间的方式。我们可以遍历数组一次,并将所有元素散列到一个哈希表中,而不是每次线性搜索数组以确定元素是否存在。一次数组的搜索需要花费O(n)
时间复杂度,而使用哈希表的平均时间复杂度为0(1)
。
1.3. 哈希冲突及解决
在哈希冲突的情况下,可以使用许多方法来冲突。在面试中,你有可能被问到冲突解决的具体方法,常见的方法如下:
链地址法,每个哈希码对应一个链表,链表中存储所有的冲突项。
开放寻址法, 所有数据都存储在哈希表的槽中。如果存在哈希冲突,从冲突的槽开始,按照某种探测顺序(线性探测、平方探测等),直到找到一个未被占用的槽。
2. 哈希表实现
语言
实现接口(API)
C++
std::unordered_map
Java
java.util.HashMap
Python
dict
JavaScript
Object 或 Map
3. 时间复杂度
操作
平均时间复杂度
查找
O(1)
插入
O(1)
删除
O(1)
在面试中涉及到的一般都是平均时间复杂度。
Last updated