2024-02-22 Daily Challenge
Today I have done leetcode's February LeetCoding Challenge with cpp
.
February LeetCoding Challenge 22
Description
Find the Town Judge
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
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
Solution
auto speedup = [](){
cin.tie(nullptr);
cout.tie(nullptr);
ios::sync_with_stdio(false);
return 0;
}();
class Solution {
public:
int findJudge(int n, vector<vector<int>>& trust) {
int outDegree[n + 1];
int inDegree[n + 1];
memset(inDegree, 0, sizeof(inDegree));
memset(outDegree, 0, sizeof(outDegree));
for(auto &t : trust) {
outDegree[t[0]] += 1;
inDegree[t[1]] += 1;
}
int answer = -1;
for(int i = 1; i <= n; ++i) {
if(inDegree[i] == n - 1 && !outDegree[i]) {
if(answer != -1) return -1;
answer = i;
}
}
return answer;
}
};
// Accepted
// 92/92 cases passed (89 ms)
// Your runtime beats 99.96 % of cpp submissions
// Your memory usage beats 73.94 % of cpp submissions (64.2 MB)