AcWing 840. 模拟散列表
原题链接
简单
作者:
Chandler丶
,
2024-03-03 23:43:58
,
所有人可见
,
阅读 17
#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std;
#define ll long long
const int N = 100003;
// 哈希存储 拉链法
int e[N],h[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;
}
int a[N];
int main() {
int t;
cin >> t;
memset(h , -1 ,sizeof h);
while(t--)
{
char op[2];
scanf("%s",&op);
if(op[0] == 'I')
{
int x;
cin >> x;
insert(x);
}
else
{
int x;
cin >> x;
if(find(x)) puts("Yes");
else puts("No");
}
}
return 0;
}