File tree Expand file tree Collapse file tree 4 files changed +104
-12
lines changed
solution/1500-1599/1510.Stone Game IV Expand file tree Collapse file tree 4 files changed +104
-12
lines changed Original file line number Diff line number Diff line change 110
110
class Solution :
111
111
def winnerSquareGame (self , n : int ) -> bool :
112
112
@cache
113
- def dfs (i ) :
114
- if i < = 0 :
113
+ def dfs (i : int ) -> bool :
114
+ if i = = 0 :
115
115
return False
116
116
j = 1
117
- while (k := (i - j * j)) >= 0 :
118
- if not dfs(k ):
117
+ while j * j <= i :
118
+ if not dfs(i - j * j ):
119
119
return True
120
120
j += 1
121
121
return False
@@ -273,6 +273,46 @@ func winnerSquareGame(n int) bool {
273
273
}
274
274
```
275
275
276
+ ### ** TypeScript**
277
+
278
+ ``` ts
279
+ function winnerSquareGame(n : number ): boolean {
280
+ const f: number [] = new Array (n + 1 ).fill (0 );
281
+ const dfs = (i : number ): boolean => {
282
+ if (i <= 0 ) {
283
+ return false ;
284
+ }
285
+ if (f [i ] !== 0 ) {
286
+ return f [i ] === 1 ;
287
+ }
288
+ for (let j = 1 ; j * j <= i ; ++ j ) {
289
+ if (! dfs (i - j * j )) {
290
+ f [i ] = 1 ;
291
+ return true ;
292
+ }
293
+ }
294
+ f [i ] = - 1 ;
295
+ return false ;
296
+ };
297
+ return dfs (n );
298
+ }
299
+ ```
300
+
301
+ ``` ts
302
+ function winnerSquareGame(n : number ): boolean {
303
+ const f: boolean [] = new Array (n + 1 ).fill (false );
304
+ for (let i = 1 ; i <= n ; ++ i ) {
305
+ for (let j = 1 ; j * j <= i ; ++ j ) {
306
+ if (! f [i - j * j ]) {
307
+ f [i ] = true ;
308
+ break ;
309
+ }
310
+ }
311
+ }
312
+ return f [n ];
313
+ }
314
+ ```
315
+
276
316
### ** ...**
277
317
278
318
```
Original file line number Diff line number Diff line change 53
53
class Solution :
54
54
def winnerSquareGame (self , n : int ) -> bool :
55
55
@cache
56
- def dfs (i ) :
57
- if i < = 0 :
56
+ def dfs (i : int ) -> bool :
57
+ if i = = 0 :
58
58
return False
59
59
j = 1
60
- while (k := (i - j * j)) >= 0 :
61
- if not dfs(k ):
60
+ while j * j <= i :
61
+ if not dfs(i - j * j ):
62
62
return True
63
63
j += 1
64
64
return False
@@ -214,6 +214,46 @@ func winnerSquareGame(n int) bool {
214
214
}
215
215
```
216
216
217
+ ### ** TypeScript**
218
+
219
+ ``` ts
220
+ function winnerSquareGame(n : number ): boolean {
221
+ const f: number [] = new Array (n + 1 ).fill (0 );
222
+ const dfs = (i : number ): boolean => {
223
+ if (i <= 0 ) {
224
+ return false ;
225
+ }
226
+ if (f [i ] !== 0 ) {
227
+ return f [i ] === 1 ;
228
+ }
229
+ for (let j = 1 ; j * j <= i ; ++ j ) {
230
+ if (! dfs (i - j * j )) {
231
+ f [i ] = 1 ;
232
+ return true ;
233
+ }
234
+ }
235
+ f [i ] = - 1 ;
236
+ return false ;
237
+ };
238
+ return dfs (n );
239
+ }
240
+ ```
241
+
242
+ ``` ts
243
+ function winnerSquareGame(n : number ): boolean {
244
+ const f: boolean [] = new Array (n + 1 ).fill (false );
245
+ for (let i = 1 ; i <= n ; ++ i ) {
246
+ for (let j = 1 ; j * j <= i ; ++ j ) {
247
+ if (! f [i - j * j ]) {
248
+ f [i ] = true ;
249
+ break ;
250
+ }
251
+ }
252
+ }
253
+ return f [n ];
254
+ }
255
+ ```
256
+
217
257
### ** ...**
218
258
219
259
```
Original file line number Diff line number Diff line change 1
1
class Solution :
2
2
def winnerSquareGame (self , n : int ) -> bool :
3
3
@cache
4
- def dfs (i ) :
5
- if i < = 0 :
4
+ def dfs (i : int ) -> bool :
5
+ if i = = 0 :
6
6
return False
7
7
j = 1
8
- while ( k := ( i - j * j )) >= 0 :
9
- if not dfs (k ):
8
+ while j * j <= i :
9
+ if not dfs (i - j * j ):
10
10
return True
11
11
j += 1
12
12
return False
Original file line number Diff line number Diff line change
1
+ function winnerSquareGame ( n : number ) : boolean {
2
+ const f : boolean [ ] = new Array ( n + 1 ) . fill ( false ) ;
3
+ for ( let i = 1 ; i <= n ; ++ i ) {
4
+ for ( let j = 1 ; j * j <= i ; ++ j ) {
5
+ if ( ! f [ i - j * j ] ) {
6
+ f [ i ] = true ;
7
+ break ;
8
+ }
9
+ }
10
+ }
11
+ return f [ n ] ;
12
+ }
You can’t perform that action at this time.
0 commit comments