第一思想是维护一个信任人的list,找到被信任数是n-1的人就是法官,但是题目中不一定保证法官存在,因此还需要统计他信任人的个数,才能唯一确定法官,即统计出度和入度。
class Solution {
public:
int findJudge(int n, vector<vector<int>>& trust) {
vector<int> inDegrees(n + 1);
vector<int> outDegrees(n + 1);
for (auto& edge : trust) {
int x = edge[0], y = edge[1];
++inDegrees[y];
++outDegrees[x];
}
for (int i = 1; i <= n; ++i) {
if (inDegrees[i] == n - 1 && outDegrees[i] == 0) {
return i;
}
}
return -1;
}
};