In a town, there are n people labeled from 1 to n. There is a rumor that one of these people is secretly the town judge.
If the town judge exists, then:
The town judge trusts nobody.
Everybody (except for the town judge) trusts the town judge.
There is exactly one person that satisfies properties 1 and 2.
You are given an array trust where trust[i] = [ai, bi] representing that the person labeled ai trusts the person labeled bi.Return the label of the town judge if the town judge exists and can be identified, or return -1 otherwise.
Example 1:
Input: n = 2, trust = [[1,2]]
Output: 2
Example 2:Input: n = 3, trust = [[1,3],[2,3]]
Output: 3
Example 3:Input: n = 3, trust = [[1,3],[2,3],[3,1]]
Output: -1
Example 4:Input: n = 3, trust = [[1,2],[2,3]]
Output: -1
Example 5:Input: n = 4, trust = [[1,3],[1,4],[2,3],[2,4],[4,3]]
Output: 3
Constraints:
1 <= n <= 1000
0 <= trust.length <= 104
trust[i].length == 2
All the pairs of trust are unique.
ai != bi
1 <= ai, bi <= n来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-town-judge
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这题要看成一个有向图,法官的出度为0,入度不止为一,且法官唯一。我们需要做的就是信任的时候加一:
class Solution {
public int findJudge(int n, int[][] trust) {
int[] trustValue = new int[n+1];//数组初始值为0
for(int[] i : trust){
trustValue[i[0]]--;
trustValue[i[1]]++;
}
for(int i = 1;i <= n;i++){
if(trustValue[i] == (n-1)) return n;
}
return -1;
}
}