岛屿的个数

岛屿的个数

给一个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 个岛.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class {
* @param grid a boolean 2D matrix
* @return an integer
*/
public int numIslands(boolean[][] grid) {
int count=0;
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++){
if(grid[i][j]==true){
count++;
change(grid,i,j);
}
}
}
return count;
}
public void change(boolean[][] grid,int i,int j){
grid[i][j]=false;
if(i>0 && grid[i-1][j]==true){
change(grid,i-1,j);
}
if(i<grid.length-1&&grid[i+1][j]==true){
change(grid,i+1,j);
}
if(j>0&&grid[i][j-1]==true){
change(grid,i,j-1);
}
if(j<grid[i].length-1&&grid[i][j+1]==true){
change(grid,i,j+1);
}
}