[Java]フリーハンドで走りきれなかった選手

11080 ワード

完走できなかった選手


問題の説明


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

せいげんじょうけん


マラソンに出場する選手は1人以上10万人以下だ.
完了長さは参加者の長さ1より小さい.
参加者の名前には、少なくとも1つまたは20個の小文字が含まれています.
参加者は同名であってもよい.
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"

I/O例説明


例1
「leo」は参加者名簿に載っているが、フルコースを走る者名簿には載っていないため、フルコースを完走できなかった.
例2
「vinko」は参加者名簿に載っていたが、完走者名簿に載っていなかったため完走できなかった.
例#3
「誤導」は参加者リストに2人いたが、完走者リストには1人しかいなかったため、1人は完走しなかった.

答えを出す。


[Python]解法

def solution(participant, completion):
    participant.sort()
    completion.sort()
    
    for i in range(len(completion)):
        if participant[i] != completion[i]:
            return participant[i]
    return participant[len(participant)-1]

[Java]解法


1)Sortの使用
次のプールはSortを使ったプールです.ParticipantシナリオとCompletionシナリオを順番に並べて、不一致選手のインデックスを返すと、未参加選手のリストが得られます.
import java.util.*;
class Solution { public String solution(String[] participant, String[] completion) {
	Arrays.sort(participant); 
    Arrays.sort(completion); 
    int i; 
    for (i=0; i<completion.length; i++){
    	if (!participant[i].equals(completion[i])){
    		return participant[i];
    		} 
 		} 
 	return participant[i]; 
	} 
}
2)HashMapの使用
次のプールはHashMapを使ったプールです.HashMapでは,Participantの参加者はキー値,valueは+1である.CompletionのリストがHashMapのキー値に存在する場合、このHashMapはvalue-1にリストされます.各キー値の値が0でない場合、未完了のリストを取得できます.
import java.util.HashMap;

class Solution {
public String solution(String[] participant, String[] completion) {
	String answer =""; 
    HashMap<String, Integer> hm = new HashMap<>(); 
    for(String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1); 
    for(String player : completion) hm.put(player, hm.get(player) -1); 
    for(String key : hm.keySet()) {
    	if(hm.get(key) != 0) {
        	answer = key; 
            System.out.println(answer); 
            break;
     		} 
		}
return answer; 
	} 
}