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]

闪念标签:LC

题目链接:https://leetcode.cn/problems/find-players-with-zero-or-one-losses/