了解一下hashmap的写法!(有时候出题人会故意卡这个~~)
const int HASH = 1000007;
struct HASHMAP
{
int head[HASH],next[MAXN],size;
long long state[MAXN];
void init()
{
size = 0;
memset(head,-1,sizeof(head));
}
bool check(long long val){//判断值是否出现过
int h = (val%HASH+HASH)%HASH;
for(int i = head[h];i != -1;i = next[i])
if(val == state[i])
return true;
return false;
}
int insert(long long val)//插入值到hashmap中
{
int h = (val%HASH+HASH)%HASH;
for(int i = head[h]; i != -1;i = next[i])//解决hash值冲突的问题,采用了前向星的方式存储!
if(val == state[i])
{
return 1;
}
state[size] = val;
next[size] = head[h];
head[h] = size++;
return 0;
}
} H1,H2;