- 入度为0
- 出度为
n - 1
class Solution {
public:
int findJudge(int n, vector<vector<int>>& trust) {
vector<int> din(n + 1), dout(n + 1);
for(auto p : trust) {
int a = p[0], b = p[1];
din[b] ++;
dout[a] ++;
}
int res = -1;
for(int i = 1; i <= n; i ++) {
if(!dout[i] && din[i] == n - 1) {
if(res != -1) res = -1;
res = i;
}
}
return res;
}
};
- 统计入度和出度需要 O(m) 的时间,m 为边数;枚举每个人判断需要 O(n) 的时间,故总时间复杂度为 O(n+m)。
- 需要额外两个数组记录每个点的入度和出度,故空间复杂度为 O(n)。