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. If a trust relationship does not exist in trust array, then such a trust relationship does not exist.
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
We create two arrays cnt1 and cnt2 of length n+1, representing the number of people each person trusts and the number of people who trust each person, respectively.
Next, we traverse the array trust, for each item [ai,bi], we increment cnt1[ai] and cnt2[bi] by 1.
Finally, we enumerate each person i in the range [1,..n]. If cnt1[i]=0 and cnt2[i]=n−1, it means that i is the town judge, and we return i. Otherwise, if no such person is found after the traversal, we return −1.
The time complexity is O(n), and the space complexity is O(n). Here, n is the length of the array trust.