描述
给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。
例如:
输入
[
[1,1,0,0,0],
[0,1,0,1,1],
[0,0,0,1,1],
[0,0,0,0,0],
[0,0,1,1,1]
]
对应的输出为3
(注:存储的01数据其实是字符'0','1')
import java.util.*;
public class Solution {
int[] dx={0,0,-1,1};
int[] dy={-1,1,0,0};
int sum=0,n,m,deep=0;
char[][] grid1;
public int solve (char[][] grid) {
n=grid.length;
m=grid[0].length;
grid1=grid;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)
if(grid1[i][j]!='0'){
deep++;
grid1[i][j]='0';
dfs(i,j);
sum++;
deep=0;
}
} return sum;
}
void dfs(int i,int j){
for(int i1=0;i1<4;i1++){
int nex=i+dx[i1];
int ney=j+dy[i1];
if(nex>=0&&nex<n&&ney>=0&&ney<m&&grid1[nex][ney]!='0'){
grid1[nex][ney]='0';
dfs(nex,ney);
}
}
}
}