From 6ccd5f59b720bcd1f8976f9ebdb6950e6665f97c Mon Sep 17 00:00:00 2001 From: Kohei Asai Date: Sat, 28 Sep 2019 16:37:40 -0700 Subject: [PATCH] 997. Find the Town Judge --- solutions/findTheTownJudge.test.ts | 18 ++++++++++++++++++ solutions/findTheTownJudge.ts | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 solutions/findTheTownJudge.test.ts create mode 100644 solutions/findTheTownJudge.ts diff --git a/solutions/findTheTownJudge.test.ts b/solutions/findTheTownJudge.test.ts new file mode 100644 index 0000000..0e1b816 --- /dev/null +++ b/solutions/findTheTownJudge.test.ts @@ -0,0 +1,18 @@ +import findJudge from "./findTheTownJudge"; + +describe("997. Find the Town Judge", () => { + const TEST_CASES = new Map<[number, [number, number][]], number>([ + [[2, [[1, 2]]], 2], + [[3, [[1, 3], [2, 3]]], 3], + [[3, [[1, 3], [2, 3], [3, 1]]], -1], + [[3, [[1, 2], [2, 3]]], -1], + [[4, [[1, 3], [1, 4], [2, 3], [2, 4], [4, 3]]], 3], + [[1, []], 1] + ]); + + for (const [[n, trust], expected] of TEST_CASES) { + it(`returns ${expected} when called with ${n} and [${trust}]`, () => { + expect(findJudge(n, trust)).toBe(expected); + }); + } +}); diff --git a/solutions/findTheTownJudge.ts b/solutions/findTheTownJudge.ts new file mode 100644 index 0000000..c15402f --- /dev/null +++ b/solutions/findTheTownJudge.ts @@ -0,0 +1,17 @@ +// 997. Find the Town Judge +// https://leetcode.com/problems/find-the-town-judge/ +export default function findJudge( + N: number, + trust: [number, number][] +): number { + const powers = new Array(N).fill(0); + + for (const [from, to] of trust) { + powers[from - 1] = -Infinity; + powers[to - 1] += 1; + } + + const judge = powers.findIndex(power => power === N - 1); + + return judge === -1 ? -1 : judge + 1; +}