哈希模板
Posted tyroheart
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈希模板相关的知识,希望对你有一定的参考价值。
哈希模板
- 开放寻址法
- 思路:开辟一个2-3倍的空间存储。
- 冲突处理:找空位进行插入,如果当前位置存在数,继续向后寻找空位,直到有空位进行插入,最后判断是否越界。
const int N = 200003, null = 0x3f3f3f3f;
int h[N];
int find(int x)
int t = (x % N + N) % N;
while (h[t] != null && h[t] != x)
t ++ ;
if (t == N)
t = 0;
return t;
- 拉链法
- 思路:开辟一个映射空间。
- 冲突处理:每个空间都挂载一个单链表,和STL的hash_table的实现方法类似。
const int N = 100003;
int h[N], e[N], ne[N], idx;
void insert(int x)
int k = (x % N + N) % N;
e[idx] = x;
ne[idx] = h[k];
h[k] = idx ++ ;
bool find(int x)
int k = (x % N + N) % N;
for (int i = h[k]; i != -1; i = ne[i])
if (e[i] == x)
return true;
return false;
以上是关于哈希模板的主要内容,如果未能解决你的问题,请参考以下文章