200.岛屿数量
描述
给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
链接
200.岛屿数量-力扣(LeetCode)(leetcode-cn.com)
解法:回溯法(思路比较清晰)
类别解决方案{
publiintnumislands(char[][]grid){ 0
int count=0;
int[][]mark=new int[grid。长度][网格[0].长度];
对于(int[]c :标记){ 0
Arrays.fill(c,0);
}
for(inti=0;igrid . LengIti){ 0
for(int j=0;jgrid[i].长度;j ){
如果(标记[I][j]==0网格[I][j]==' 1 '){ 0
DFS(网格,I,j,mark);
计数;
}
}
}
返回计数
}
privatevoidDFS(char[][]grid,intx,inty,int[][]mark){ 0
mark[x][y]=1;
int[]dx={-1,1,0,0 };
int[]dy={0,0,-1,1 };
for(int k=0;k4;k){ 0
intnewDx=dx[k]x;
intnewDy=dy[k]y;
if(new dx0 | | new dx=grid。长度| |新dy0 | |新dy=网格[新dx].长度){ 0
继续;
}
如果(标记[NewDx][NewDy]==0网格[NewDx][NewDy]===' 1 '){ 0
DFS(网格、newDx、newDy、mark);
}
}
}
}
可详细参考
AlgoMooc算法慕课网
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/130346.html