哈希的作用就是把一个很大的数据映射到一个较小的数据范围内(这个比较小的范围通常是在1e5 – 1e6之间),这样可以更方便我们的查找,计算以及应用。
其实映射的过程很容易完成,也就是取模的过程,但是因为两个不同的数取模后结果可能相同,所以我们需要注意的是哈希表的储存方式。哈希表通常有两种储存的方法,一种是拉链法,一种是开放寻址法。
两种方法的实际效果都差不多,复杂度都是O(1),基本可以瞬间完成,所以选一个自己看的顺眼的记一下然后会用就好惹QwQ
1.拉链法
拉链法是采用链表的方式来对我们的哈希值进行储存方式,比较直观,就是找到取模后对应的下标,进行链表的插入操作就可以了。
#include<bits/stdc++.h>
using namespace std;
const int N = 100003;
int h[N], e[N], ne[N], idx;
int insert(int x) //插入操作
{
int k = (x % N + N) % N; //防止出现负数的情况
e[idx] = x;
ne[idx0 = h[k];
h[k] = idx ++;
}
bool found(int x) //查找操作
{
int k = (x %</