Given a 2d grid map of '1's (land) and '0's (water), count the number of islands.
An island is surrounded by water and is formed by connecting adjacent lands
horizontally or vertically. You may assume all four edges of the grid are all surrounded
by water.
Example 1:
11110Answer: 1
11010
11000
00000
Example 2:
11000Answer: 3
11000
00100
00011
与上一题的解决思路是类似的,如果是1,上下左右遍历,是1则置为0.
public class Solution {
public int numIslands(char[][] grid) {
if(grid==null||grid.length<=0)
return 0;
int count=0;
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[0].length;j++){
if(grid[i][j]=='1'){
count++;
find(grid,i,j);
}
}
}
return count;
}
private void find(char[][] grid,int i,int j){
if(i<0||j<0||i>=grid.length||j>=grid[0].length)
return;
if(grid[i][j]!='1')return;
grid[i][j]='0';
find(grid,i+1,j);
find(grid,i-1,j);
find(grid,i,j-1);
find(grid,i,j+1);
}
}