class Solution {
public int numIslands(char[][] grid) {
if(grid == null ||grid.length ==0){
return 0;
}
int nr = grid.length;
int nc =grid[0].length;
int nums = 0;
for(int i = 0;i<nr;++i){
for(int j =0;j<nc;++j){
if(grid[i][j] == '1'){
++nums;
dfs(grid,i,j);
}
}
}
return nums;
}
public void dfs(char[][] grid ,int r ,int c){
//遍历,遍历过之后就置位'0'
int nr = grid.length;
int nc =grid[0].length;
if(r<0 || c<0||r>=nr||c>=nc||grid[r][c] == '0'){
return ;
}
grid[r][c] = '0';
dfs(grid,r-1,c);
dfs(grid,r+1,c);
dfs(grid,r,c+1);
dfs(grid,r,c-1);
}
}
深度优先遍历,遍历过的地方,都设置为1