Detect Cycles in 2D Grid LeetCode solution in JavaScript

1
const dirs = [
2
[-1, 0],
3
[1, 0],
4
[0, -1],
5
[0, 1],
6
];
7

8
var containsCycle = function (grid) {
9
const n = grid.length,
10
m = grid[0].length;
11
const dfs = function (type, i, j, previ, prevj) {
12
if (i < 0 || j < 0 || i == n || j == m) return false;
13
if (grid[i][j] != type) return grid[i][j] == type.toUpperCase();
14
grid[i][j] = grid[i][j].toUpperCase();
15
for (let dir of dirs) {
16
if (i + dir[0] == previ && j + dir[1] == prevj) continue;
17
if (dfs(type, i + dir[0], j + dir[1], i, j)) return true;
18
}
19
return false;
20
};
21

22
for (let i = 0; i < n; i++)
23
for (let j = 0; j < m; j++) {
24
if (grid[i][j] == grid[i][j].toUpperCase()) continue;
25
if (dfs(grid[i][j], i, j, -1, -1)) return true;
26
}
27
return false;
28
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0