问题: 在一个小镇里,按从 1 到 n 为 n 个人进行编号。
传言称,这些人中有一个是小镇上的秘密法官。
如果小镇的法官真的存在,那么:
小镇的法官不相信任何人。
每个人(除了小镇法官外)都信任小镇的法官。
只有一个人同时满足条件 1 和条件 2 。
解题思路:
1.小镇所有人信任法官,所以所有信任别人的居民有n-1个
res = set(x for x,_ in trust)
if len(res) != n-1:
return -1
res:变量值
in trust:给定数组trust
2.之后遍历找出不信任别人的居民(疑似法官)
for i in range(1,n+1):
if i not in res:
break
for in range:循环,从1,到n+1循环
3.最后遍历统计信任疑似法官的人数:
num = 0
for _,y in trust:
if y == i: num += 1
return i if num == n-1 else -1
num = 0:初始化num值
num += 1相当于num = num+1
总代码:
class Solution:
def findJudge(self, n: int, trust: List[List[int]]) -> int: #List[List[int]该函数返回一个整数列表
res = set(x for x,_ in trust) #set:一组数,方便查看某个元素是否在这个集合内
if len(res) != n-1: #len()返回字符串,列表,字典,元组
return -1
for i in range(1,n+1):
if i not in res:
break
num = 0
for _,y in trust:
if y == i:
num += 1
return i if num == n-1 else -1