Skip to content

Commit 37f7e41

Browse files
committed
feat: add solutions to lc problem: No.1510
No.1510.Stone Game IV
1 parent b23c753 commit 37f7e41

File tree

4 files changed

+104
-12
lines changed

4 files changed

+104
-12
lines changed

solution/1500-1599/1510.Stone Game IV/README.md

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,12 @@ $$
110110
class Solution:
111111
def winnerSquareGame(self, n: int) -> bool:
112112
@cache
113-
def dfs(i):
114-
if i <= 0:
113+
def dfs(i: int) -> bool:
114+
if i == 0:
115115
return False
116116
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):
119119
return True
120120
j += 1
121121
return False
@@ -273,6 +273,46 @@ func winnerSquareGame(n int) bool {
273273
}
274274
```
275275

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+
276316
### **...**
277317

278318
```

solution/1500-1599/1510.Stone Game IV/README_EN.md

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@
5353
class Solution:
5454
def winnerSquareGame(self, n: int) -> bool:
5555
@cache
56-
def dfs(i):
57-
if i <= 0:
56+
def dfs(i: int) -> bool:
57+
if i == 0:
5858
return False
5959
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):
6262
return True
6363
j += 1
6464
return False
@@ -214,6 +214,46 @@ func winnerSquareGame(n int) bool {
214214
}
215215
```
216216

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+
217257
### **...**
218258

219259
```

solution/1500-1599/1510.Stone Game IV/Solution.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
class Solution:
22
def winnerSquareGame(self, n: int) -> bool:
33
@cache
4-
def dfs(i):
5-
if i <= 0:
4+
def dfs(i: int) -> bool:
5+
if i == 0:
66
return False
77
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):
1010
return True
1111
j += 1
1212
return False
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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+
}

0 commit comments

Comments
 (0)