997.找到小镇的法官
链接:997.找到小镇的法官
难度:Easy
标签:图、数组、哈希表
简介:如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的编号。否则,返回 -1。
题解 1 - typescript
- 编辑时间:2021-12-19
- 执行用时:112ms
- 内存消耗:46.8MB
- 编程语言:typescript
- 解法介绍:统计每个人是否都有 n-1 个人相信且没有相信别人。
class Person {
parent: number = 0;
children: number = 0;
constructor(public idx: number) {}
}
function findJudge(n: number, trust: number[][]): number {
const persons = new Array(n).fill(0).map((_, i) => new Person(i + 1));
for (const [i1, i2] of trust) {
persons[i1 - 1].parent++;
persons[i2 - 1].children++;
}
return persons.find(p => p.children === n - 1 && p.parent === 0)?.idx ?? -1;
}
题解 2 - python
- 编辑时间:2024-09-22
- 执行用时:74ms
- 内存消耗:19.66MB
- 编程语言:python
- 解法介绍:遍历。
class Solution:
def findJudge(self, n: int, trust: List[List[int]]) -> int:
carr = [[] for _ in range(n + 1)]
parr = [[] for _ in range(n + 1)]
for p1, p2 in trust:
parr[p2].append(p1)
carr[p1].append(p2)
for i in range(1, n + 1):
if not carr[i] and len(parr[i]) == n - 1:
return i
return -1