Skip to content

Commit 4d331e1

Browse files
committed
refactor: solution 679. 24 Game
1 parent 293f9de commit 4d331e1

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

solutions/679. 24 Game/README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,30 +68,34 @@
6868
* @return {boolean}
6969
*/
7070
const judgePoint24 = function (cards) {
71-
if (cards.length === 1) return Math.abs(cards[0] - 24) < 1e-6;
72-
7371
const n = cards.length;
7472

73+
if (n === 1) return Math.abs(cards[0] - 24) < 10e-9;
74+
7575
const getValues = (a, b) => {
7676
const values = [a + b, a * b, a - b, b - a];
7777

7878
if (a) values.push(b / a);
7979
if (b) values.push(a / b);
80+
8081
return values;
8182
};
8283

83-
for (let a = 1; a < n; a++) {
84-
for (let b = 0; b < a; b++) {
84+
for (let a = 0; a < n - 1; a++) {
85+
for (let b = a + 1; b < n; b++) {
8586
const values = getValues(cards[a], cards[b]);
8687
const nextCards = cards.filter((_, index) => index !== a && index !== b);
8788

8889
for (const value of values) {
8990
nextCards.push(value);
91+
9092
if (judgePoint24(nextCards)) return true;
93+
9194
nextCards.pop();
9295
}
9396
}
9497
}
98+
9599
return false;
96100
};
97101
```

solutions/679. 24 Game/solution.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,33 @@
33
* @return {boolean}
44
*/
55
const judgePoint24 = function (cards) {
6-
if (cards.length === 1) return Math.abs(cards[0] - 24) < 1e-6;
7-
86
const n = cards.length;
97

8+
if (n === 1) return Math.abs(cards[0] - 24) < 10e-9;
9+
1010
const getValues = (a, b) => {
1111
const values = [a + b, a * b, a - b, b - a];
1212

1313
if (a) values.push(b / a);
1414
if (b) values.push(a / b);
15+
1516
return values;
1617
};
1718

18-
for (let a = 1; a < n; a++) {
19-
for (let b = 0; b < a; b++) {
19+
for (let a = 0; a < n - 1; a++) {
20+
for (let b = a + 1; b < n; b++) {
2021
const values = getValues(cards[a], cards[b]);
2122
const nextCards = cards.filter((_, index) => index !== a && index !== b);
2223

2324
for (const value of values) {
2425
nextCards.push(value);
26+
2527
if (judgePoint24(nextCards)) return true;
28+
2629
nextCards.pop();
2730
}
2831
}
2932
}
33+
3034
return false;
3135
};

0 commit comments

Comments
 (0)