In a town, there are N
people labelled 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 trust
, an array of pairs trust[i] = [a, b]
representing that the person labelled a
trusts the person labelled b
.
If the town judge exists and can be identified, return the label of the town judge. Otherwise, return -1
.
Example 1:
Input: N = 2, trust = [[1,2]]
Output: 2
思路:就是judge,喜欢他的人是N-1,同时他不能喜欢任何人;记录fans和likes,记录我的fans有多少个,然后记录我喜欢人没有;
class Solution {
public int findJudge(int N, int[][] trust) {
if(trust == null) {
return N;
}
int[] fans = new int[N + 1];
int[] likes = new int[N + 1];
for(int i = 0; i < trust.length; i++) {
// a --> b, a like b;
int a = trust[i][0];
int b = trust[i][1];
fans[b]++;
likes[a]++;
}
for(int i = 1; i <= N; i++) {
if(fans[i] == N -1 && likes[i] == 0) {
return i;
}
}
return -1;
}
}