[アルゴリズム]プログラマー-完走しなかった選手


  • ハッシュ問題#1
  • - 1. 問題の説明


    多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
    マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.

    2.制限


  • マラソンに出場する選手は1人以上10万人以下だ.

  • 完了長さは参加者の長さ1より小さい.

  • 参加者の名前には、少なくとも1つまたは20個の小文字が含まれています.

  • 参加者は同名であってもよい.
  • 3.解答


  • Java HashMap libraryの使用

  • getOrDefault
    getOrDefault(Object key, V DefaultValue)
  • キー:値を入力する要素が必要なキー
  • defaultvalue:デフォルト値
  • 、指定したキーにマッピングされていない場合は、
    戻り値
  • :キーの値

  • ハッシュマッピングを使用して、参加者に存在する名前の数を保存します(同じ名前のため).

  • 完了リストで、名前(キー)にマップされた値(値)から1を減算します.
    ->完了者の最終値は0

  • リストを迂回して値が0以外の名前を検索して返します
  • 4.コード

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Set;
    class Solution {
        public String solution(String[] participant, String[] completion) {
            String answer = "";
            HashMap<String, Integer> list = new HashMap<>();
            <br>
            for(int i = 0; i<participant.length;i++) {
            	list.put(participant[i], list.getOrDefault(participant[i], 0)+1);
            }
            <br>
            for(int i = 0; i<completion.length;i++) {
            	list.put(completion[i], list.get(completion[i])-1);
            }
        	<br>
        	for(int i = 0;i<list.size();i++){
        		if(list.get(participant[i])!=0) {
        			answer = participant[i];
        		}
        	}
            
            return answer;
            
        }
    }