查找类问题:
1、数字查找:给你一堆数字,让你在其中查找x是否存在
2、字符串查找:给你很多字符串,让你在其中找出字符串s是否存在
面对大量的数据量,很多人的想法是先sort排序,然后二分查找。可以使用map来做。
问题:有n个整数的集合,想让你从中找出x是否存在。
输入描述:
第一行输入一个正整数n
第二行输入n个正整数
第三行输入一个q,表示查询次数
接下来输入q行,每行一个正整数x,查询x是否存在
如果x存在,请输出find,如果不存在,请输出no,并将x加入到集合中
#include<iostream>
#include<map>
using namespace std;
int main(){
int n,q,x;
map<int,int> M;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&x);
M[x]++;
}
scanf("%d",&q);
for(int i=0;i<q;i++){
scanf("%d",&x);
if(M[x]==0){
printf("no\n");
M[x]++;
}
else printf("find\n");
}
return 0;
}