思路:dfs,找到一个1,把它及其周围的1全变为0.之后,总共找到多少个1,就是多少个岛屿。
public int solve (char[][] grid) {
// write code here
int island=0;
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[0].length;j++){
if(grid[i][j]=='1'){
island++;
dfs(i,j,grid);
}
}
}
return island;
}
public void dfs(int i,int j,char[][] grid){
if(i<0 || j<0 ||i>=grid.length || j>=grid[0].length || grid[i][j]=='0'){
return;
}
grid[i][j]='0';
dfs(i+1,j,grid);
dfs(i,j+1,grid);
dfs(i-1,j,grid);
dfs(i,j-1,grid);
}
京公网安备 11010502036488号