Number of Islands

Yuqiu Ge
1 min readApr 29, 2023

--

  1. first understand dfs
  2. initiate visited matrix
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
visited[i][j] = false;
}
}

3. call dsf when getting land (1):

for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
if (!visited[i][j] && grid[i][j] == '1') {
dfs(grid, i, j);
numOfIslands++;
}
}
}

4. dfs

private void dfs(char[][] grid, int i, int j) {
if (i<0 || j<0 || i>=x || j >=y|| visited[i][j] || grid[i][j] == '0') return;
visited[i][j] = true;
dfs(grid, i+1, j);
dfs(grid, i-1, j);
dfs(grid, i, j+1);
dfs(grid, i, j-1);
}

5. more info:

https://github.com/geyuqiu/kata-bootstraps/blob/master/java/junit5/src/main/java/leetcode/NumIslands.java

--

--