Back to all solutions
#997 - Find the Town Judge
Problem Description
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.
Solution
/**
* @param {number} n
* @param {number[][]} trust
* @return {number}
*/
var findJudge = function(n, trust) {
if (!trust.length) {
return n === 1 ? n : -1;
}
const map = new Map();
trust.forEach(([_, value]) => map.set(value, (map.get(value) || 0 ) + 1));
const [judge, count] = [...map].sort(([,a], [,b]) => b - a)[0];
return count === n - 1 && !trust.find(([key]) => key === judge) ? judge : -1;
};