Number of Closed Islands LeetCode solution in C++

1
class Solution {
2
public:
3
void dfs(int i, int j, vector<vector<int>> &grid) {
4
int m = grid.size(), n = grid[0].size();
5
if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] != 0) return;
6

7
grid[i][j] = 1;
8
int dx[4] = {1, -1, 0, 0};
9
int dy[4] = {0, 0, 1, -1};
10

11
for (int k = 0; k < 4; k++) {
12
int nx = i + dx[k];
13
int ny = j + dy[k];
14
dfs(nx, ny, grid);
15
}
16
}
17

18
int closedIsland(vector<vector<int>> &grid) {
19
int m = grid.size(), n = grid[0].size();
20
for (int i = 0; i < m; i++) {
21
for (int j = 0; j < n; j++) {
22
if ((i * j == 0 || i == m - 1 || j == n - 1) && (grid[i][j] == 0)) dfs(i, j, grid);
23
}
24
}
25

26
int count = 0;
27
for (int i = 1; i < m - 1; i++) {
28
for (int j = 1; j < n - 1; j++) {
29
if (grid[i][j] == 0) {
30
dfs(i, j, grid);
31
count++;
32
}
33
}
34
}
35
return count;
36
}
37
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0