Town Judge
https://leetcode.com/explore/featured/card/may-leetcoding-challenge/535/week-2-may-8th-may-14th/3325/
brutal force:
from collections import defaultdict
class Solution:
def findJudge(self, N: int, trust: List[List[int]]) -> int:
if N==1 and len(trust) == 0:
return 1
d = defaultdict(list)
s = set()
for edge in trust:
a,b = edge
d[b].append(a)
s.add(a)
res = []
for k,v in d.items():
if len(v) == N-1:
res.append(k)
if len(res) != 1:
return -1
if res[0] in s:
return -1
return res[0]
图论的方法
indegrees & outdegrees
如果被人相信是indegree,相信别人是outdegree,town judge的indegree是N-1, outdegree是0
from collections import defaultdict
class Solution:
def findJudge(self, N: int, trust: List[List[int]]) -> int:
indegrees = [0] * (N+1)
outdegrees = [0] * (N+1)
for edge in trust:
a,b = edge
outdegrees[a]+=1
indegrees[b]+=1
res = []
for i in range(1,N+1):
if outdegrees[i] == 0 and indegrees[i] == N-1:
res.append(i)
if len(res) != 1:
return -1
return res[0]
Last updated
Was this helpful?