JZX轻语:简
LeetCode 2225 - 找出输掉零场或一场比赛的玩家
发表于2024年05月22日
使用哈希表记录每个玩家的负场次数即可,然后再有序遍历(避免结果数组需要排序)哈希表的键输出即可。
由于有些玩家从来没输过,如果哈希表仅保存负者的数据是不够的,因为不清楚到底有几个玩家,所以遍历比赛数据时,如果赢家没有在哈希表时,则显式将其初始化为0。
class Solution:
def findWinners(self, matches: List[List[int]]) -> List[List[int]]:
# 玩家 -> 输的次数
lose_cnt_mapping = {}
for u, v in matches:
# 如果赢家没有在字典内, 也把它放进去, 方便后面遍历的时候能找到
# 因为不清楚到底有几个玩家
lose_cnt_mapping[u] = lose_cnt_mapping.get(u, 0)
lose_cnt_mapping[v] = lose_cnt_mapping.get(v, 0) + 1
all_win_players, lose_one_match_players = [], []
# 有序遍历字典的键
for player in sorted(lose_cnt_mapping.keys()):
if lose_cnt_mapping[player] == 0:
all_win_players.append(player)
elif lose_cnt_mapping[player] == 1:
lose_one_match_players.append(player)
return [all_win_players, lose_one_match_players]