1. 程式人生 > >查詢練習 hash——出現過的數字(最簡單的雜湊)

查詢練習 hash——出現過的數字(最簡單的雜湊)

Problem Description

有一個數據字典,裡面存有n個數字(n<=100000),小明現在接到一個任務,這項任務看起來非常簡單——給定m個數字,分別查詢這m個數字是否出現在字典之中;但是考慮到資料量的問題,小明找到了善於程式設計的你,希望你可以幫他解決這個問題。

 

Input

 輸入資料只有一組!

第一行包含兩個整數n m,分別代表字典中數字的個數和要查詢的數字的個數。

接著n行代表字典中的n個數字。

最後m表示要查詢的數字。

Output

 如果某個數字存在,則輸出YES,否則輸出NO

 

Sample Input

5 3
1
2
3
4
5

5
4
10

Sample Output

YES
YES
NO

Hint

 

Source

趙利強

程式碼:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int Hash[N];
int main()
{
    int n,m;
    int a;
    cin>>n>>m;
    memset(Hash,-1,sizeof(Hash));
    for(int i=1;i<=n;i++)
    {
        cin>>a;
        Hash[a] = a;///ha xi
    }
    for(int i=1;i<=m;i++)
    {
        cin>>a;
        if(Hash[a]!=-1)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}