1.定义:
用对应关系f使得每个关键字都有对应的存储位置,建立映射关系,这样记录到连续的储存空间称为哈希表
S
t
o
r
a
g
e
l
o
c
a
t
i
o
n
=
f
(
k
e
y
)
Storage location=f(key)
Storagelocation=f(key)
2.优点:
不需要遍历a[i]的值与key值是否相等后返回得到索引,可直接利用哈希表得到索引
3.根据对应关系f的不同构造方法也不同:
- 除留余数法(常用)
f ( k e y ) = k e y m o d p ( p < = m ) f(key)=key mod p(p<=m) f(key)=keymodp(p<=m)
- 折叠法
- 平方取中法
4.python实现:
例题:两数之和(用字典模拟哈希表)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap={}
for poi,num in enumerate(nums):
hashmap[num] = poi
for i,num in enumerate(nums):
j = hashmap.get(target - num)
if j is not None and i!=j:
return [i,j]