hash(开放寻址法)
作者:
Oct_9
,
2024-04-14 15:30:19
,
所有人可见
,
阅读 13
#include <iostream>
#include <cstring>
using namespace std;
const int N = 200003, null = 0x3f3f3f3f;
int h[N];
int find(int x)
{
int k = (x % N + N) % N; // 初始想要找的位置
while (h[k] != null && h[k] != x) // 没有就往后走,一定要找到坑位或者和h[k] == x;
{
k ++;
if (k == N) k = 0;
}
return k;
}
int main()
{
int n;
scanf("%d", &n);
memset(h, 0x3f, sizeof h);
while (n --)
{
char op[2];
int x;
scanf("%s%d", op, &x);
int k = find(x);
if (op[0] == 'I') h[k] = x;
else
{
if (h[k] != null) puts("Yes");
else puts("No");
}
}
return 0;
}