Count Sub Islands LeetCode solution in Java

1
class Solution {
2
public int countSubIslands(int[][] grid1, int[][] grid2) {
3
int m = grid1.length;
4
int n = grid1[0].length;
5
boolean[][] vis = new boolean[m][n];
6
int count = 0;
7
int[] dir = {1, 0, -1, 0, 1};
8

9
for (int i = 0; i < m; ++i) {
10
for (int j = 0; j < n; ++j) {
11
if (grid2[i][j] == 0 || vis[i][j]) continue;
12

13
Queue<int[]> queue = new LinkedList<>();
14
boolean flag = true;
15
vis[i][j] = true;
16

17
queue.add(new int[] {i, j});
18

19
while (!queue.isEmpty()) {
20
int[] vtx = queue.remove();
21

22
if (grid1[vtx[0]][vtx[1]] == 0) flag = false;
23

24
for (int k = 0; k < 4; ++k) {
25
int x = vtx[0] + dir[k];
26
int y = vtx[1] + dir[k + 1];
27

28
if (x >= 0 && x < m && y >= 0 && y < n && grid2[x][y] == 1 && !vis[x][y]) {
29
vis[x][y] = true;
30

31
queue.add(new int[] {x, y});
32
}
33
}
34
}
35

36
if (flag) ++count;
37
}
38
}
39

40
return count;
41
}
42
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0