Skip to content

Commit 26448c6

Browse files
committed
💀 [79]
1 parent 7a21f77 commit 26448c6

File tree

2 files changed

+63
-52
lines changed

2 files changed

+63
-52
lines changed

79/my_solution.js

+44-30
Original file line numberDiff line numberDiff line change
@@ -4,68 +4,75 @@
44
* @return {boolean}
55
*/
66
const exist = (board, word) => {
7-
let doesExist = false;
7+
// let doesExist = false;
88
// , wordList = word.split("");
99
// console.log(wordList);
1010
// wordList.shift()
1111
// console.log(wordList);
12+
console.log(board);
13+
console.log(word);
14+
// let visit = Array.from({ length: board.length }, () => Array.from({ length: board[0].length }, () => 0))
15+
let visit = new Set();
1216

13-
const expand = (r, c, visit, i) => {
17+
const expand = (r, c, i) => {
1418
console.log(`r:${r}, c:${c}, i:${i}, visit:`)
1519
// console.log(wordList)
1620
console.log(visit)
21+
console.log("visited?:" + visit.has(`${r}${c}`))
1722
// console.log(i)
1823
// console.log(word.length)
1924
// console.log(i === word.length)
2025

2126
if (i === word.length) {
2227
console.log(">>>>>>>> >TRUE")
23-
doesExist = true;
28+
return true;
2429
}
2530

2631
if (
2732
r === board.length ||
2833
c === board[0].length ||
2934
r < 0 ||
3035
c < 0 ||
31-
1 === visit[r][c]
36+
visit.has(`${r}${c}`) ||
37+
word[i] !== board[r][c]
3238
) {
33-
return;
39+
return false;
3440
}
3541

36-
if (word[i] !== board[r][c]) return;
37-
38-
console.log(`${word[i]} vs ${board[r][c]}`)
39-
visit[r][c] = 1;
42+
// visit[r][c] = 1;
43+
visit.add(`${r}${c}`);
44+
console.log(visit)
4045
i++
41-
// wordList.shift();
42-
43-
// expand(r, c + 1, visit, wordList);
44-
// expand(r + 1, c, visit, wordList);
45-
// expand(r, c - 1, visit, wordList);
46-
// expand(r - 1, c, visit, wordList);
47-
expand(r, c + 1, visit, i);
48-
expand(r + 1, c, visit, i);
49-
expand(r, c - 1, visit, i);
50-
expand(r - 1, c, visit, i);
46+
47+
let res = expand(r, c + 1, i) ||
48+
expand(r + 1, c, i) ||
49+
expand(r, c - 1, i) ||
50+
expand(r - 1, c, i);
51+
52+
console.log("... Deleting visit")
53+
console.log(visit)
54+
visit.delete(`${r}${c}`);
55+
console.log(visit)
56+
return res;
57+
// return expand(r, c + 1, i) ||
58+
// expand(r + 1, c, i) ||
59+
// expand(r, c - 1, i) ||
60+
// expand(r - 1, c, i);
5161
}
5262

5363
// console.log(board)
5464
for (let r = 0; r < board.length; r++) {
5565
for (let c = 0; c < board[r].length; c++) {
56-
if (!doesExist && word[0] === board[r][c]) {
66+
if (word[0] === board[r][c]) {
5767
console.log(`>>>>> ${word[0]} === ${board[r][c]}`)
58-
let visit = Array.from({ length: board.length }, () => Array.from({ length: board[0].length }, () => 0))
5968
// let wordList = word.split("");
6069
// expand(r, c, visit, wordList);
61-
expand(r, c, visit, 0);
70+
if (expand(r, c, 0)) return true;
6271
}
6372
}
6473
}
6574

66-
// console.log(board)
67-
68-
return doesExist;
75+
return false;
6976
};
7077

7178
let x = null;
@@ -77,11 +84,11 @@ let x = null;
7784
// ["A", "D", "E", "E"]
7885
// ], "ABCCED")//true
7986

80-
x = exist([
81-
["A", "B", "C", "E"],
82-
["S", "F", "E", "S"],
83-
["A", "D", "E", "E"]
84-
], "ABCEFSADEESE") // true
87+
// x = exist([
88+
// ["A", "B", "C", "E"],
89+
// ["S", "F", "E", "S"],
90+
// ["A", "D", "E", "E"]
91+
// ], "ABCEFSADEESE") // true
8592

8693
// x = exist(
8794
// [
@@ -103,6 +110,13 @@ x = exist([
103110
// ["a", "a", "a", "a"]
104111
// ], "aaaaaaaaaaab") // false
105112

113+
x = exist(
114+
[
115+
["C", "A", "A"],
116+
["A", "A", "A"],
117+
["B", "C", "D"]
118+
], "AAB") // true
119+
106120

107121
console.log("Result")
108122
console.log(x)

79/solution.js

+19-22
Original file line numberDiff line numberDiff line change
@@ -4,43 +4,40 @@
44
* @return {boolean}
55
*/
66
const exist = (board, word) => {
7-
let doesExist = false;
7+
let visit = new Set();
88

9-
const expand = (r, c, visit, wordList) => {
10-
if (0 === wordList.length) {
11-
doesExist = true;
12-
}
9+
const expand = (r, c, i) => {
10+
if (i === word.length) return true;
1311

1412
if (
1513
r === board.length ||
1614
c === board[0].length ||
1715
r < 0 ||
1816
c < 0 ||
19-
1 === visit[r][c]
20-
) {
21-
return;
22-
}
17+
visit.has(`${r}${c}`) ||
18+
word[i] !== board[r][c]
19+
) return false;
2320

24-
if (wordList[0] === board[r][c]) {
25-
visit[r][c] = 1;
26-
wordList.shift();
21+
visit.add(`${r}${c}`);
22+
i++
2723

28-
expand(r, c + 1, visit, wordList);
29-
expand(r + 1, c, visit, wordList);
30-
expand(r, c - 1, visit, wordList);
31-
expand(r - 1, c, visit, wordList);
32-
}
24+
let res = expand(r, c + 1, i) ||
25+
expand(r + 1, c, i) ||
26+
expand(r, c - 1, i) ||
27+
expand(r - 1, c, i);
28+
29+
visit.delete(`${r}${c}`);
30+
31+
return res;
3332
}
3433

3534
for (let r = 0; r < board.length; r++) {
3635
for (let c = 0; c < board[r].length; c++) {
37-
if (!doesExist && word[0] === board[r][c]) {
38-
let visit = Array.from({ length: board.length }, () => Array.from({ length: board[0].length }, () => 0))
39-
let wordList = word.split("");
40-
expand(r, c, visit, wordList);
36+
if (word[0] === board[r][c]) {
37+
if (expand(r, c, 0)) return true;
4138
}
4239
}
4340
}
4441

45-
return doesExist;
42+
return false;
4643
};

0 commit comments

Comments
 (0)