File tree 3 files changed +112
-0
lines changed
solution/0900-0999/0935.Knight Dialer
3 files changed +112
-0
lines changed Original file line number Diff line number Diff line change @@ -224,6 +224,45 @@ public class Solution {
224
224
}
225
225
```
226
226
227
+ ### ** TypeScript**
228
+
229
+ ``` ts
230
+ function knightDialer(n : number ): number {
231
+ const MOD: number = 1e9 + 7 ;
232
+
233
+ if (n === 1 ) {
234
+ return 10 ;
235
+ }
236
+
237
+ const f: number [] = new Array (10 ).fill (1 );
238
+
239
+ while (-- n > 0 ) {
240
+ const t: number [] = new Array (10 ).fill (0 );
241
+
242
+ t [0 ] = f [4 ] + f [6 ];
243
+ t [1 ] = f [6 ] + f [8 ];
244
+ t [2 ] = f [7 ] + f [9 ];
245
+ t [3 ] = f [4 ] + f [8 ];
246
+ t [4 ] = f [0 ] + f [3 ] + f [9 ];
247
+ t [6 ] = f [0 ] + f [1 ] + f [7 ];
248
+ t [7 ] = f [2 ] + f [6 ];
249
+ t [8 ] = f [1 ] + f [3 ];
250
+ t [9 ] = f [2 ] + f [4 ];
251
+
252
+ for (let i = 0 ; i < 10 ; ++ i ) {
253
+ f [i ] = t [i ] % MOD ;
254
+ }
255
+ }
256
+
257
+ let ans: number = 0 ;
258
+ for (const v of f ) {
259
+ ans = (ans + v ) % MOD ;
260
+ }
261
+
262
+ return ans ;
263
+ }
264
+ ```
265
+
227
266
### ** ...**
228
267
229
268
```
Original file line number Diff line number Diff line change @@ -205,6 +205,45 @@ public class Solution {
205
205
}
206
206
```
207
207
208
+ ### ** TypeScript**
209
+
210
+ ``` ts
211
+ function knightDialer(n : number ): number {
212
+ const MOD: number = 1e9 + 7 ;
213
+
214
+ if (n === 1 ) {
215
+ return 10 ;
216
+ }
217
+
218
+ const f: number [] = new Array (10 ).fill (1 );
219
+
220
+ while (-- n > 0 ) {
221
+ const t: number [] = new Array (10 ).fill (0 );
222
+
223
+ t [0 ] = f [4 ] + f [6 ];
224
+ t [1 ] = f [6 ] + f [8 ];
225
+ t [2 ] = f [7 ] + f [9 ];
226
+ t [3 ] = f [4 ] + f [8 ];
227
+ t [4 ] = f [0 ] + f [3 ] + f [9 ];
228
+ t [6 ] = f [0 ] + f [1 ] + f [7 ];
229
+ t [7 ] = f [2 ] + f [6 ];
230
+ t [8 ] = f [1 ] + f [3 ];
231
+ t [9 ] = f [2 ] + f [4 ];
232
+
233
+ for (let i = 0 ; i < 10 ; ++ i ) {
234
+ f [i ] = t [i ] % MOD ;
235
+ }
236
+ }
237
+
238
+ let ans: number = 0 ;
239
+ for (const v of f ) {
240
+ ans = (ans + v ) % MOD ;
241
+ }
242
+
243
+ return ans ;
244
+ }
245
+ ```
246
+
208
247
### ** ...**
209
248
210
249
```
Original file line number Diff line number Diff line change
1
+ function knightDialer ( n : number ) : number {
2
+ const MOD : number = 1e9 + 7 ;
3
+
4
+ if ( n === 1 ) {
5
+ return 10 ;
6
+ }
7
+
8
+ const f : number [ ] = new Array ( 10 ) . fill ( 1 ) ;
9
+
10
+ while ( -- n > 0 ) {
11
+ const t : number [ ] = new Array ( 10 ) . fill ( 0 ) ;
12
+
13
+ t [ 0 ] = f [ 4 ] + f [ 6 ] ;
14
+ t [ 1 ] = f [ 6 ] + f [ 8 ] ;
15
+ t [ 2 ] = f [ 7 ] + f [ 9 ] ;
16
+ t [ 3 ] = f [ 4 ] + f [ 8 ] ;
17
+ t [ 4 ] = f [ 0 ] + f [ 3 ] + f [ 9 ] ;
18
+ t [ 6 ] = f [ 0 ] + f [ 1 ] + f [ 7 ] ;
19
+ t [ 7 ] = f [ 2 ] + f [ 6 ] ;
20
+ t [ 8 ] = f [ 1 ] + f [ 3 ] ;
21
+ t [ 9 ] = f [ 2 ] + f [ 4 ] ;
22
+
23
+ for ( let i = 0 ; i < 10 ; ++ i ) {
24
+ f [ i ] = t [ i ] % MOD ;
25
+ }
26
+ }
27
+
28
+ let ans : number = 0 ;
29
+ for ( const v of f ) {
30
+ ans = ( ans + v ) % MOD ;
31
+ }
32
+
33
+ return ans ;
34
+ }
You can’t perform that action at this time.
0 commit comments