LC每日一题|20240522 - 2225. 找出输掉零场或一场比赛的玩家
给你一个整数数组
matches其中matches[i] = [winneri, loseri]表示在一场比赛中winneri击败了loseri。返回一个长度为 2 的列表 **
answer:
answer[0]是所有 没有 输掉任何比赛的玩家列表。answer[1]是所有恰好输掉 一场 比赛的玩家列表。两个列表中的值都应该按 递增 顺序返回。
注意:
- 只考虑那些参与 至少一场 比赛的玩家。
- 生成的测试用例保证 不存在 两场比赛结果 相同 。
提示:
1 <= matches.length <= 10^5matches[i].length == 21 <= winner[i], loser[i] <= 10^5winner[i] != loser[i]- 所有
matches[i]互不相同
题目等级:Medium
解题思路
非常简单的哈希表应用题~
AC代码
class Solution {
fun findWinners(matches: Array<IntArray>): List<List<Int>> {
val map = HashMap<Int, Int>()
matches.forEach {
if (map[it[0]] == null) map[it[0]] = 0
map[it[1]] = (map[it[1]] ?: 0) + 1
}
val res = listOf<ArrayList<Int>>(arrayListOf(), arrayListOf())
map.forEach {
if (it.value == 0) res[0].add(it.key)
if (it.value == 1) res[1].add(it.key)
}
res[0].sort()
res[1].sort()
return res
}
}
时间复杂度:O(nlogn)
空间复杂度:O(n)