diff --git a/solution/0900-0999/0935.Knight Dialer/README.md b/solution/0900-0999/0935.Knight Dialer/README.md index 80585feab7454..fe659f82668ea 100644 --- a/solution/0900-0999/0935.Knight Dialer/README.md +++ b/solution/0900-0999/0935.Knight Dialer/README.md @@ -224,6 +224,45 @@ public class Solution { } ``` +### **TypeScript** + +```ts +function knightDialer(n: number): number { + const MOD: number = 1e9 + 7; + + if (n === 1) { + return 10; + } + + const f: number[] = new Array(10).fill(1); + + while (--n > 0) { + const t: number[] = new Array(10).fill(0); + + t[0] = f[4] + f[6]; + t[1] = f[6] + f[8]; + t[2] = f[7] + f[9]; + t[3] = f[4] + f[8]; + t[4] = f[0] + f[3] + f[9]; + t[6] = f[0] + f[1] + f[7]; + t[7] = f[2] + f[6]; + t[8] = f[1] + f[3]; + t[9] = f[2] + f[4]; + + for (let i = 0; i < 10; ++i) { + f[i] = t[i] % MOD; + } + } + + let ans: number = 0; + for (const v of f) { + ans = (ans + v) % MOD; + } + + return ans; +} +``` + ### **...** ``` diff --git a/solution/0900-0999/0935.Knight Dialer/README_EN.md b/solution/0900-0999/0935.Knight Dialer/README_EN.md index a7c94eaabe008..de7b48665e3ea 100644 --- a/solution/0900-0999/0935.Knight Dialer/README_EN.md +++ b/solution/0900-0999/0935.Knight Dialer/README_EN.md @@ -205,6 +205,45 @@ public class Solution { } ``` +### **TypeScript** + +```ts +function knightDialer(n: number): number { + const MOD: number = 1e9 + 7; + + if (n === 1) { + return 10; + } + + const f: number[] = new Array(10).fill(1); + + while (--n > 0) { + const t: number[] = new Array(10).fill(0); + + t[0] = f[4] + f[6]; + t[1] = f[6] + f[8]; + t[2] = f[7] + f[9]; + t[3] = f[4] + f[8]; + t[4] = f[0] + f[3] + f[9]; + t[6] = f[0] + f[1] + f[7]; + t[7] = f[2] + f[6]; + t[8] = f[1] + f[3]; + t[9] = f[2] + f[4]; + + for (let i = 0; i < 10; ++i) { + f[i] = t[i] % MOD; + } + } + + let ans: number = 0; + for (const v of f) { + ans = (ans + v) % MOD; + } + + return ans; +} +``` + ### **...** ``` diff --git a/solution/0900-0999/0935.Knight Dialer/solution.ts b/solution/0900-0999/0935.Knight Dialer/solution.ts new file mode 100644 index 0000000000000..e262e04661c56 --- /dev/null +++ b/solution/0900-0999/0935.Knight Dialer/solution.ts @@ -0,0 +1,34 @@ +function knightDialer(n: number): number { + const MOD: number = 1e9 + 7; + + if (n === 1) { + return 10; + } + + const f: number[] = new Array(10).fill(1); + + while (--n > 0) { + const t: number[] = new Array(10).fill(0); + + t[0] = f[4] + f[6]; + t[1] = f[6] + f[8]; + t[2] = f[7] + f[9]; + t[3] = f[4] + f[8]; + t[4] = f[0] + f[3] + f[9]; + t[6] = f[0] + f[1] + f[7]; + t[7] = f[2] + f[6]; + t[8] = f[1] + f[3]; + t[9] = f[2] + f[4]; + + for (let i = 0; i < 10; ++i) { + f[i] = t[i] % MOD; + } + } + + let ans: number = 0; + for (const v of f) { + ans = (ans + v) % MOD; + } + + return ans; +}