[プログラマー]ハッシュ完走していない選手🏃🏿♀️🏃🏿♀️/Java
8860 ワード
📝 没有完走的选手
✔¥質問説明
多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.
✔勘定科目の制限
勘定科目勘定科目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"
勘定科目勘定科目I/Oの例説明
例1
「leo」は参加者名簿に載っているが、フルコースを走る者名簿には載っていないため、フルコースを完走できなかった.
例2
「vinko」は参加者名簿に載っていたが、完走者名簿に載っていなかったため完走できなかった.
例#3
「誤導」は参加者リストに2人いたが、完走者リストには1人しかいなかったため、1人は完走しなかった.
👩🏻💻 Sortを使用したプール class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
String answer = null;
for (int i = 0; i < completion.length; i++)
if(!participant[i].equals(completion[i]))
answer = participant[i];
}
return answer;
}
同じ名前のユーザを持つ例3の参加者リストをソートすると、
ソート後、参加者と完了値が異なる場合は、答えに保存します.
砲口の長さは完成長さと同じなので、参加者が最後に保存した選手が完成していない選手であれば、答えが見つからない.そこで、最後にParticipant[index]に戻ります.
👩🏻💻 Hashを用いて解く class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> players = new HashMap<>();
for(String player : participant)
players.put(player, players.getOrDefault(player, 0) + 1);
for(String player : completion)
players.put(player, players.get(player) - 1);
for(String key : players.keySet()){
if (players.get(key) != 0) {
answer = key;
break;
}
}
return answer;
}
}
海市地図では、選手たちの名前をkeyに、+1をvalueに入れます.
同じ名前のユーザーがいる可能性があるため、getOrDefault関数を使用します.
📎getOrDefault(Object key, V DefaultValue)
見つかったキーが存在する場合は、そのキーにマッピングされた値を返します.そうでない場合は、ポーリング値を返す関数を返します.
パラメータ入力のキーがプレイヤーのキーと同じ値である場合は、Valueを入力します.そうでない場合は0をDefaultとして使用します.
図に示すように、選手たちを海西地図に入れた後、完走した選手の名前を消した.最後に値が0じゃない選手の名前を答えに保存して終わりました!
Reference
この問題について([プログラマー]ハッシュ完走していない選手🏃🏿♀️🏃🏿♀️/Java), 我々は、より多くの情報をここで見つけました
https://velog.io/@sennys2/프로그래머스해시.완주하지-못한-선수Java
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
String answer = null;
for (int i = 0; i < completion.length; i++)
if(!participant[i].equals(completion[i]))
answer = participant[i];
}
return answer;
}
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> players = new HashMap<>();
for(String player : participant)
players.put(player, players.getOrDefault(player, 0) + 1);
for(String player : completion)
players.put(player, players.get(player) - 1);
for(String key : players.keySet()){
if (players.get(key) != 0) {
answer = key;
break;
}
}
return answer;
}
}
海市地図では、選手たちの名前をkeyに、+1をvalueに入れます.同じ名前のユーザーがいる可能性があるため、getOrDefault関数を使用します.
📎getOrDefault(Object key, V DefaultValue)
見つかったキーが存在する場合は、そのキーにマッピングされた値を返します.そうでない場合は、ポーリング値を返す関数を返します.
パラメータ入力のキーがプレイヤーのキーと同じ値である場合は、Valueを入力します.そうでない場合は0をDefaultとして使用します.
図に示すように、選手たちを海西地図に入れた後、完走した選手の名前を消した.最後に値が0じゃない選手の名前を答えに保存して終わりました!
Reference
この問題について([プログラマー]ハッシュ完走していない選手🏃🏿♀️🏃🏿♀️/Java), 我々は、より多くの情報をここで見つけました https://velog.io/@sennys2/프로그래머스해시.완주하지-못한-선수Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol