题目
类型:图
解题思路
令 m 为 trust 数组长度
对于每个 trust[i] = (a, b) 而言,看作是从 a 指向 b 的有向边。
遍历 trust,统计每个节点的「入度」和「出度」:若存在 a -> b,则 a 节点「出度」加一,b 节点「入度」加一。
最后遍历所有点,若存在「入度」数量为 n−1,且「出度」数量为 0 的节点即是法官。
代码
class Solution {public int findJudge(int n, int[][] trust) {int[] in = new int[n + 1], out = new int[n + 1];for (int[] t : trust) {int a = t[0], b = t[1];in[b]++; out[a]++;}for (int i = 1; i <= n; i++) {if (in[i] == n - 1 && out[i] == 0) return i;}return -1;}}
