200.岛屿数量
方法:深度优先搜索
扫描整个二维网格,如果一个位置为1,则以其起始节点开始进行深度优先搜索,在深度优先搜索过程中,每个搜索到的1都会被重新比较为0
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 num_islans = 0;
for(int r = 0; r < nr;r++){
for(int c = 0; c < nc;c++){
if(grid[r][c] == '1'){
num_islans++;
dfs(grid,r,c);
}
}
}
return num_islans;
}
public void dfs(char[][] grid,int r,int c){
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);
}
}