您的位置:首页 > 其它

岛屿的个数number-of-islands

2015-12-01 23:07 253 查看
给一个01矩阵,求不同的岛屿的个数。

0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。

样例

在矩阵:

[
[1, 1, 0, 0, 0],
[0, 1, 0, 0, 1],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 1]
]

中有
3
个岛.

解题思路:对于这种图论的题来说,(づ。◕‿‿◕。)づ宝宝真的是不会,所以我百度学习了一下。不看不知道,一看还是挺简单的,最简单的DFS

public class Solution {
/**
* @param grid a boolean 2D matrix
* @return an integer
*/
public void dfs(boolean[][] grid, int x , int y){
if(x<0||x>grid.length-1){
return;
}
if(y<0||y>grid[0].length-1){
return;
}
if(!grid[x][y]){
return;
}
grid[x][y]=false;
dfs(grid,x+1,y);
dfs(grid,x-1,y);
dfs(grid,x,y+1);
dfs(grid,x,y-1);
}
public int numIslands(boolean[][] grid) {
// Write your code here
if(grid.length ==0 || grid[0].length==0 || grid == null )   return 0;
int n=grid.length;
int m=grid[0].length;
int count=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]){
dfs(grid,i,j);
count++;
}
}
}
return count;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: