Input:
11000
11000
00100
00011
Output: 3
public int numIslands(char[][] grid){
if(grid==null || grid.length==0){
return 0;
}
int islandNum = 0;
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[0].length;j++){
if(grid[i][j]!='0'){
dfs(grid, i, j);
islandNum++;
}
}
}
return islandNum;
}
private void dfs(char[][] grid,int i,int j){
if(i<0||i>=grid.length||j<0||j>grid[0].length||grid[i][j]=='0'){
return;
}
grid[i][j] = '0';
int[][] direction = {{0,1},{0,-1},{1,0},{-1,0}};
for(int[] d :direction){
dfs(grid, i+d[0], j+d[1]);
}
}