leetcode代码记录(找到小镇的法官

简介: leetcode代码记录(找到小镇的法官

1. 题目:

小镇里有 n 个人,按从 1 到 n 的顺序编号。传言称,这些人中有一个暗地里是小镇法官。

如果小镇法官真的存在,那么:

小镇法官不会信任任何人。

每个人(除了小镇法官)都信任这位小镇法官。

只有一个人同时满足属性 1 和属性 2 。

给你一个数组 trust ,其中 trust[i] = [ai, bi] 表示编号为 ai 的人信任编号为 bi 的人。


如果小镇法官存在并且可以确定他的身份,请返回该法官的编号;否则,返回 -1 。

示例 1:

输入:n = 2, trust = [[1,2]]

输出:2

示例 2:

输入:n = 3, trust = [[1,3],[2,3]]

输出:3

示例 3:

输入:n = 3, trust = [[1,3],[2,3],[3,1]]

输出:-1

2. 我的代码:

class Solution:
    def findJudge(self, n: int, trust: List[List[int]]) -> int:
        # 每个人的入度 和 出度(因为第一个人编号是1,所以度从1开始)
        in_degree = [0] * (n + 1)
        out_degree = [0] * (n + 1)

        # 统计入度和出度
        for in_out in trust:
            out_d, in_d = in_out
            in_degree[in_d] += 1
            out_degree[out_d] += 1
        
        # 查看每个人的入度和出度
        for i in range(1, n + 1):
            if in_degree[i] == (n - 1) and out_degree[i] == 0:
                return i
        return -1

最后,入度为n - 1 (因为除了本人以外),出度为0,即可证明为法官。

目录
相关文章
|
6月前
力扣-2029-石子游戏-‘屎山’代码
力扣-2029-石子游戏-‘屎山’代码
48 3
|
7月前
|
算法
leetcode代码记录(全排列 II
leetcode代码记录(全排列 II
58 4
|
7月前
leetcode代码记录(最长回文子串
leetcode代码记录(最长回文子串
49 2
|
7月前
|
算法
leetcode代码记录(寻找两个正序数组的中位数
leetcode代码记录(寻找两个正序数组的中位数
50 2
|
7月前
|
算法
leetcode代码记录(全排列
leetcode代码记录(全排列
68 1
|
7月前
|
索引
leetcode代码记录(Z 字形变换
leetcode代码记录(Z 字形变换
51 1
|
7月前
leetcode代码记录(回文数
leetcode代码记录(回文数
54 1
|
7月前
leetcode代码记录(两数之和
leetcode代码记录(两数之和
46 1
|
7月前
|
机器学习/深度学习
leetcode代码记录(旋转图像
leetcode代码记录(旋转图像
43 0
|
7月前
|
索引
leetcode代码记录(最长公共子序列
leetcode代码记录(最长公共子序列
34 0