题目:
给出N个正整数,再给出M个正整数,问这M个数中的每个数分别是否在N个数中出现过,其中N,M<=100000
#include <cstdio>
const in max = 100000
bool HashTable[max] = {false};
int main(){
int n,m,x;
scanf("%d %d",&n,&m);
for(int i = 0; i< n;i++)
{
scanf("%d ",&x);
HashTable[x] = true;
}
for(int i = 0;i<m;i++)
{
scanf("%d",&x);
if(HashTable[x] == true)cout<<"YES"<<endl;
else cout << "NO" <<endl;
}
return 0;
}
如果要求的是M个要查询的数字中每个数字在N中出现的次数
#include <cstdio>
const in max = 100000
int HashTable[max] = {0};
int main(){
int n,m,x;
scanf("%d %d",&n,&m);
for(int i = 0; i< n;i++)
{
scanf("%d ",&x);
HashTable[x]++;
}
for(int i = 0;i<m;i++)
{
scanf("%d",&x);
printf("%d\n",HashTable[x]);
}
return 0;
}