题解:
class Solution {
public int numIslands(char[][] grid) {
int count = 0;
for (int i = 0; i < grid.length; i++){
for (int j=0; j < grid[0].length; j++){
if (grid[i][j] == '1'){//如果是陆地
count++;
dfs(grid, i,j );//基于1不停的扩散,把周边的1和自身全部改成1
}
}
}
return count;
}
/**
*以x,y坐标展开岛屿,将值设置为2
*/
public void dfs(char[][] grid, int x, int y){
if (x < 0 || y < 0|| y >= grid[0].length || x >= grid.length || grid[x][y] !='1'){//不能超过边界,必须是1,不然就退出,
return;
}
grid[x][y] = '2';//先把自身变成2,然后扩散
dfs(grid,x,y +1);//右
dfs(grid,x+1, y);//下
dfs(grid,x,y- 1);//左
dfs(grid,x -1,y);//上
}
}