给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
JAVA:
class Solution {
public int numIslands(char[][] grid) {
if(grid==null||grid[0]==null){
return 0;
}
int res=0;
int row=grid.length;
int col=grid[0].length;
for(int r=0;r<row;r++){
for(int c=0;c<col;c++){
if(grid[r][c]=='1'){
infect(r,c,row,col,grid);
res++;
}
}
}
return res;
}
public void infect(int r,int c,int row,int col,char[][]grid){
if(r<0||r>=row||c<0||c>=col||grid[r][c]!='1'){
return;
}
grid[r][c]='2';
infect(r-1,c,row,col,grid);
infect(r+1,c,row,col,grid);
infect(r,c-1,row,col,grid);
infect(r,c+1,row,col,grid);
}
}