法官是入度为N-1,出度为0的点
一开始用了一个num来统计法官的数目,但后来想了一下没有必要,既然有一个法官的入度为N-1了,说明其他的人都信任他,不存在其他人的出度为0
public int findJudge(int N, int[][] trust) {
int inDegree[] = new int[N + 1];
int outDegree[] = new int[N + 1];
for (int[] path : trust) {
int start = path[0];
int end = path[1];
inDegree[end]++;
outDegree[start]++;
}
int num = 0;
int res = -1;
for (int i = 1; i <= N; i++) {
if (outDegree[i] == 0 && inDegree[i] == N - 1) {
res = i;
num++;
}
}
if(num == 1)
return res;
return -1;
}
修改后的:
public int findJudge(int N, int[][] trust) {
int inDegree[] = new int[N + 1];
int outDegree[] = new int[N + 1];
for (int[] path : trust) {
int start = path[0];
int end = path[1];
inDegree[end]++;
outDegree[start]++;
}
for (int i = 1; i <= N; i++) {
if (outDegree[i] == 0 && inDegree[i] == N - 1) {
return i;
}
}
return -1;
}