[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;
}
}
Reference
この問題について([Java]フリーハンドで走りきれなかった選手), 我々は、より多くの情報をここで見つけました https://velog.io/@dmsql698/Java-해시완주하지-못한-선수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol