题目地址
https://leetcode.cn/problems/find-players-with-zero-or-one-losses/description/
题目描述
代码及思路
class Solution {
public List<List<Integer>> findWinners(int[][] matches) {
//创建一个map记录比赛胜者组
//创建一个map记录比赛败者组
//全胜者不应该出现在败者组中
//恰好只输了一场的在败者组中失败次数为1
Map<Integer, Integer> winnerMap = new HashMap();
Map<Integer, Integer> loserMap = new HashMap();
for (int[] m : matches) {
if (winnerMap.containsKey(m[0])) {
winnerMap.put(m[0], winnerMap.get(m[0])+1);
} else {
winnerMap.put(m[0], 1);
}
if (loserMap.containsKey(m[1])) {
loserMap.put(m[1], loserMap.get(m[1] )+1);
} else {
loserMap.put(m[1], 1);
}
}
List<Integer> answers0List = winnerMap.keySet().stream().filter(e -> !loserMap.containsKey(e)).sorted().collect(Collectors.toList());
List<Integer> answer1List = loserMap.entrySet().stream().filter(e->e.getValue()==1).map(e->e.getKey()).sorted().collect(Collectors.toList());
List<List<Integer>> ans = new ArrayList<>();
ans.add(answers0List);
ans.add(answer1List);
return ans;
}
}