完走していない選手
20621 ワード
一日に一つの問題を解く
多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.
せいげんじょうけん
マラソンに出場する選手は1人以上10万人以下だ.
完了長さは参加者の長さ1より小さい.
参加者の名前には、少なくとも1つまたは20個の小文字が含まれています.
参加者は同名であってもよい.
初挑戦
だめだと思ったら、結果値を出してから回します.
二度目の挑戦
効率テストに失敗しました
3度目の挑戦
失敗
4度目の挑戦
国境を越える
多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.
せいげんじょうけん
マラソンに出場する選手は1人以上10万人以下だ.
完了長さは参加者の長さ1より小さい.
参加者の名前には、少なくとも1つまたは20個の小文字が含まれています.
参加者は同名であってもよい.
初挑戦
public static String solution(String[] participant, String[] completion) {
Map<Integer, String> participantMap = new ConcurrentHashMap<>();
List<String> completionList = new CopyOnWriteArrayList<>(Arrays.asList(completion));
for (String p : participant) {
participantMap.put(participantMap.size(), p);
}
for (int key : participantMap.keySet()) {
String value = participantMap.get(key);
for (String c : completionList) {
if (value.equals(c)) {
participantMap.remove(key, value);
completionList.remove(c);
break;
}
}
}
for (String t : participantMap.values()) {
return t;
}
return null;
}
だめだと思ったら、結果値を出してから回します.
二度目の挑戦
public String solution(String[] participant, String[] completion) {
List<String> participantList = new CopyOnWriteArrayList<>(Arrays.asList(participant));
List<String> completionList = new CopyOnWriteArrayList<>(Arrays.asList(completion));
int x = 0;
for (String p : participantList) {
int y = 0;
for (String c : completionList) {
if (p.equals(c)) {
participantList.remove(x--);
completionList.remove(y);
break;
}
y++;
}
x++;
}
return participantList.get(0);
}
効率テストに失敗しました
3度目の挑戦
public static String solution(String[] participant, String[] completion) {
List<String> participantList = new CopyOnWriteArrayList<>(Arrays.asList(participant));
List<String> completionList = new CopyOnWriteArrayList<>(Arrays.asList(completion));
int x = 0;
for (String p : participantList) {
if (completionList.contains(p)) {
participantList.remove(x--);
completionList.remove(p);
}
x++;
}
return participantList.get(0);
}
失敗
4度目の挑戦
public static String solution(String[] participant, String[] completion) {
Map<String, Integer> participantMap = new HashMap<>();
for (String p : participant) {
if (participantMap.containsKey(p)) {
participantMap.put(p, participantMap.get(p) + 1);
} else {
participantMap.put(p, 1);
}
}
for (String c : completion) {
participantMap.put(c, participantMap.get(c) - 1);
}
for (String key : participantMap.keySet()) {
int v = participantMap.get(key);
if (v != 0) {
return key;
}
}
return null;
}
国境を越える
Reference
この問題について(完走していない選手), 我々は、より多くの情報をここで見つけました https://velog.io/@dhrod0325/완주하지-못한-선수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol