版权声明:转载请注明出处 https://blog.csdn.net/warmeyes/article/details/86497988
主要利用bool函数,将出现的数字通过数组下标的方式给予true;最后查询一下现有数组的,所以查询数字为下标的数组内储存的为false还是true即可,整体算法复杂度非常低O(n+m),的确是简单题的最优解法,防止大量查询时,利用二次遍历所造成的时间复杂度过高而超时~代码如下:
#include<cstdio>
const int maxn = 100010;
bool hashtable[maxn] = {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 < n ; i++)
{
scanf("%d", &x);
if(hashtable[x] == true)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}