Leetcode
2020.05.02 18:25
997. Find the Town Judge
조회 수 846 추천 수 0 댓글 0
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
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
Note:
1 <= N <= 1000
trust.length <= 10000
trust[i]
are all differenttrust[i][0] != trust[i][1]
1 <= trust[i][0], trust[i][1] <= N
aclass Solution { public int findJudge(int N, int[][] trust) { Map<Integer, Integer> hmap = new HashMap<>(); if(trust.length == 0){ return 1; } for(int i=0; i<trust.length; i++){ Integer people = trust[i][0]; Integer tpeople = trust[i][1]; hmap.put(people, hmap.getOrDefault(people,0)-1); hmap.put(tpeople, hmap.getOrDefault(tpeople,0)+1); } for(Map.Entry<Integer, Integer> item : hmap.entrySet()){ Integer tpeople = item.getKey(); Integer tcount = item.getValue(); if(tcount == N - 1){ return tpeople; } } return -1; } }
class Solution { public int findJudge(int N, int[][] trust) { int[] trusted = new int[N]; for(int i=0; i<trust.length; i++){ int people = trust[i][0]; int tpeople = trust[i][1]; trusted[tpeople-1]++; trusted[people-1]--; } for(int i=0; i<trusted.length; i++){ if(trusted[i] == N - 1){ return i+1; } } return -1; } }
[문제] https://leetcode.com/problems/find-the-town-judge/