2021.12.19的每日一题
难度:easy
图中出度入度的应用;
入度是指向该节点的边的数量:统计相信 i 的人的数量;
出度是该节点出发的边的数量:统计 i 相信的人的数量;
法官是被n-1个人相信,而相信0个人的人;
Java:
class Solution {
public int findJudge(int n, int[][] trust) {
//入度:相信i的人数为trustIn[i]
int[] trustIn = new int[n + 1];
//出度:i相信的的人的数量为trustOut[i]
int[] trustOut = new int[n + 1];
//统计出入度
for (int i = 0; i < trust.length; i++) {
trustIn[trust[i][1]]++;
trustOut[trust[i][0]]++;
}
//法官:入度为n-1,出度为0
//注意小镇居民标号从1~n
for (int i = 1; i <= n; i++) {
if (trustIn[i] == n - 1 && trustOut[i] == 0) {
return i;
}
}
//否则,返回-1
return -1;
}
}
复杂度分析:
- 时间复杂度:O(n)
- 空间复杂度:O(n)
睡觉睡觉!!