深度优先遍历。遍历完一个几点再遍历上下左右节点,然后设置为0,是的不再访问,和之前的题类似
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'){
dfs(grid,i,j);
count++;
}
}
}
return count;
}
public void dfs(char[][]grid,int i,int j){
//字符0
if(i<0||j<0||i>=grid.length||j>=grid[0].length||grid[i][j]=='0') return;
grid[i][j]='0' ;//不再访问
dfs(grid,i+1,j);
dfs(grid,i,j+1);
dfs(grid,i-1,j);
dfs(grid,i,j-1);
}
}