Number of Closed Islands LeetCode solution in Java

1
class Solution {
2
boolean isClosed = true;
3

4
public int closedIsland(int[][] grid) {
5
int m = grid.length;
6
int n = grid[0].length;
7
int count = 0;
8

9
for (int i = 1; i < m - 1; i++) {
10
for (int j = 1; j < n - 1; j++) {
11
isClosed = true;
12
if (grid[i][j] == 0) {
13
dfs(grid, i, j);
14

15
if (isClosed) {
16
count++;
17
}
18
}
19
}
20
}
21

22
return count;
23
}
24

25
public void dfs(int[][] grid, int i, int j) {
26
if (i < 0 || j < 0 || i > grid.length - 1 || j > grid[0].length - 1 || grid[i][j] != 0) return;
27

28
grid[i][j] = 1; // to mark as visited
29

30
if (i == 0 || j == 0 || i == grid.length - 1 || j == grid[0].length - 1) isClosed = false;
31

32
dfs(grid, i, j + 1);
33
dfs(grid, i, j - 1);
34
dfs(grid, i + 1, j);
35
dfs(grid, i - 1, j);
36
}
37
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0