基础算法 840.模拟散列表(开放寻址法)
值得注意的是,N应选择一个质数,且N的大小应为数据量的两到三倍。
memset函数在cstring库中,是按字节赋值。
可以将数组所有的值赋为0,-1. 但没办法将值赋为1.
#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){
k ++;
if(k == N) k = 0;
}
return k;
}
int main(){
int n;
cin >> n;
memset(h, 0x3f, sizeof h);
while(n--){
char op[2];
int m;
scanf("%s%d",op, &m);
int k = find(m);
if(*op == 'I') h[k] = m;
else{
if(h[k] != null) puts("Yes");
else puts("No");
}
}
return 0;
}

浙公网安备 33010602011771号