Detect Cycles in 2D Grid LeetCode solution in C++

1
class Solution {
2
public:
3
int dx[4] = {-1, 1, 0, 0};
4
int dy[4] = {0, 0, 1, -1};
5
bool solve(vector<vector<char>> &grid, int i, int j, int m, int n, int x, int y,
6
vector<vector<int>> &vis, char startChar) {
7
vis[i][j] = 1;
8
for (int k = 0; k < 4; k++) {
9
int xx = i + dx[k];
10
int yy = j + dy[k];
11
if (xx >= 0 && yy >= 0 && xx < m && yy < n && grid[xx][yy] == startChar &&
12
!(x == xx && y == yy)) {
13
if (vis[xx][yy] || solve(grid, xx, yy, m, n, i, j, vis, startChar)) return true;
14
}
15
}
16
return false;
17
}
18

19
bool containsCycle(vector<vector<char>> &grid) {
20
int m = grid.size();
21
int n = grid[0].size();
22
vector<vector<int>> vis(m, vector<int>(n, 0));
23
for (int i = 0; i < m; i++) {
24
for (int j = 0; j < n; j++) {
25
if (!vis[i][j] && solve(grid, i, j, m, n, -1, -1, vis, grid[i][j])) {
26
return true;
27
}
28
}
29
}
30
return false;
31
}
32
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0