哈希模板

Posted tyroheart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈希模板相关的知识,希望对你有一定的参考价值。

哈希模板

  • 开放寻址法
  1. 思路:开辟一个2-3倍的空间存储。
  2. 冲突处理:找空位进行插入,如果当前位置存在数,继续向后寻找空位,直到有空位进行插入,最后判断是否越界。
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;
  • 拉链法
  1. 思路:开辟一个映射空间。
  2. 冲突处理:每个空间都挂载一个单链表,和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;

以上是关于哈希模板的主要内容,如果未能解决你的问题,请参考以下文章

哈希讲解-And-洛谷-P3370 模板字符串哈希-题解

Rails:Jquery 模板不为背景图像创建哈希

哈希模板

使用哈希模板特化相互引用的两个类

哈希表模板

哈希模板