Hash表
1,编程思路关键点
(1)理清什么是Key什么是Value
(2)哈希函数选择
哈希函数映像到地址几何中任何一个地址的概率必须是相等的。
(3)冲突处理方法
(4)优化:更少的平均查找长度
2,基本知识点
(1)哈希函数
a,直接定址(巧用)
H(key) = key,H(key) = a * key + b
b,数字分析(巧用)
c,平方取中(不知道全部关键字时使用)
d,除留余数(常用)
(Times33)常用字符串解决方案:
nHash = nHash*33 + *key++;
效率高,冲突低。
方法:不断乘33分布。
(2)冲突处理
a,开放定址,再散列
H = (H(key)+ d ) MOD m
b,再哈希(再来个哈希函数)
c,链地址法
d,公共溢出区
LeetCode题目:
Easy:1,217
Medium:3,
Hard: