Flood fill算法:遍历每个位置,当该位置为岛屿时,将该位置相邻的岛屿全部标记。标记的方式又DFS和BFS。
import java.util.*;
public class Solution {
/**
* 判断岛屿数量
* @param grid char字符型二维数组
* @return int整型
*/
int[] dx = new int[]{0,-1,0,1};
int[] dy = new int[]{1,0,-1,0};
public int solve (char[][] grid) {
// write code here
int res = 0;
if(grid.length == 0 || grid[0].length == 0) {
return res;
}
int n = grid.length, m = grid[0].length;
for(int i = 0;i < n;i++) {
for(int j = 0;j < m;j++) {
if(grid[i][j] == '1') {
res++;
dfs(grid,i,j);
}
}
}
return res;
}
public void dfs(char[][] grid,int a,int b) {
grid[a][b] = '0';
for(int i = 0;i < 4;i++) {
int x = a + dx[i];
int y = b + dy[i];
if(x >= 0 && x < grid.length && y >= 0 && y < grid[0].length) {
if(grid[x][y] == '1') {
dfs(grid,x,y);
}
}
}
}
}