タイトル:
小さな町で、N Nの個人に1からマークに従っ。これらの人々が町に秘密の裁判官を持っているという噂。
その後、裁判官の町は本当に存在する場合:
裁判官は誰の町を信じませんでした。
(裁判官の小さな町に加えて)誰もが信頼裁判官の町があります。
同じ時間と会う項目1項目2で一人だけ。
アレイの信頼、信頼信頼による配列[I] = [ B] 標識Bを信頼してマークされた人として表さ組成物。
そこに秘密の町の裁判官であり、彼の身元を確認できた場合は、裁判官の復帰をマークしてください。それ以外の場合は-1を返します。
例1:
输入:N = 2, trust = [[1,2]]
输出:2
例2:
输入:N = 3, trust = [[1,3],[2,3]]
输出:3
例3:
输入:N = 3, trust = [[1,3],[2,3],[3,1]]
输出:-1
例4:
输入:N = 3, trust = [[1,2],[2,3]]
输出:-1
例5:
输入:N = 4, trust = [[1,3],[1,4],[2,3],[2,4],[4,3]]
输出:3
問題解決:
class Solution:
def findJudge(self, N: int, trust: List[List[int]]) -> int:
arr = [0] * N # 数组记录 (入度-出度) (被相信算一个入度,相信别人算一个出度)
for item in trust:
arr[item[0] - 1] -= 1 # 出度,则数组元素-1
arr[item[1] - 1] += 1 # 入度,则数组元素+1
for i in range(N):
if arr[i] == N - 1: # 找到 (入度-出度) 为 N-1的 就是法官!
return i + 1
return -1
フォーカス:
裁判官は、0程度で誰も信じていなかった、裁判官は、N個の要素の配列のために、N-1度で、誰もが、(中度-度)だけのストレージを必要と信じてすることができ、なぜなら裁判官値はN-1である場合