思路
记录入度和出度
一个人可以连接多个,一个人也可以被多个人连接,就是图的性质
一个人可以信任多人,一个人也可以被多个人信任
统计入度出度,
法官:入度n-1,出度0
其他人:因为被所有其他人信任的 只能有法官,所以入度<n-1
出度 无所谓
代码
static class Solution {
public int findJudge(int n, int[][] trust) {
//创建数组:长度为n+1,索引表示人的编号
// 0位表示出度,1位表示入度
int[][] arr = new int[n+1][2];
//遍历数组trust,统计出度,入读
//注意,trust长度不一定为n
for (int i = 0; i < trust.length; i++) {
//统计出度
int whoOut=trust[i][0];
arr[whoOut][0]++;
//统计入度
int whoIn=trust[i][1];
arr[whoIn][1]++;
}
//判断是否只有一个满足,出度0--0位,入度n-1--1位
int count = 0;
int result= 0;
for (int i = 1; i <= n; i++) {
if (arr[i][0]==0&&arr[i][1]==n-1) {
count++;
result = i;
}
}
//如果等于1
if (count==1){
return result;
}
//其他情况
else {
return -1;
}
}