[Programmers](高得点KIT)ハッシュ-完走しなかった選手


https://programmers.co.kr/learn/courses/30/lessons/42576
問題の説明
多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.
せいげんじょうけん
マラソンに出場する選手は1人以上10万人以下だ.
完了長さは参加者の長さ1より小さい.
参加者の名前には、少なくとも1つまたは20個の小文字が含まれています.
参加者は同名であってもよい.
I/O例
participantcompletionreturn["leo", "kiki", "eden"]["eden", "kiki"]"leo"["marina", "josipa", "nikola", "vinko", "filipa"]["josipa", "filipa", "marina", "nikola"]"vinko"["mislav", "stanko", "mislav", "ana"]["stanko", "ana", "mislav"]"mislav"
Solution
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    unordered_map<string, int> d;
    for(auto& i : participant) d[i]++;
    for(auto& i : completion) d[i]--;
    for(auto& i : d){
        if(i.second > 0){
            answer = i.first;
            break;
        }
    }
    return answer;
}
無秩序地図と地図の違いは何ですか?既存のマッピングは、キーの値に基づいてデータを格納します.ただし、無秩序mapはkeyのハッシュ値に基づいてデータを格納する.
特にデータの並べ替えや格納が必要な場合ではなく、特定のデータの値を格納するだけでよい.従って、無秩序mapは、性能の面でより有利である.
実際、このような状況では、難しいとは思いません.無秩序なmapを書く必要はありません.しかし、少し無知な方法で、賢くない方法を使うなら、二中の門で処理すべきだ.
参加者のデータは最大10万人.ペーパーレスで二重ゲート処理を行うとタイムアウトする可能性があります.すなわち,データ処理速度をできるだけ速くするには,より先進的な方法が必要である.
mapについては、特に説明しません.各参加者のデータを各ドアで地図に更新します.それぞれが参加したことを示すために、1人1つのデータを入れます.
そして、データにアクセスすることで、完走した人の価値を1つ減らすことができます.このように処理すると、データを1つずつ検索して比較する必要がなく、迅速に処理することができます.
それ以来、地図をめくって、唯一のvalueが0ではないやつを見つければいい.簡単です.