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:
11110
11010
11000
00000
Answer: 1
Example 2:
11000
11000
00100
00011
Answer: 3
public class Solution {
public int numIslands(char[][] grid) {
int res = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
if (grid[i][j] == '1') {
solve(grid, i, j);
res++;
}
}
}
return res;
}
private void solve(char[][] grid, int i, int j) {
// TODO Auto-generated method stub
if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] != '1') {
return;
}
grid[i][j] = '0';
solve(grid, i - 1, j);
solve(grid, i + 1, j);
solve(grid, i, j - 1);
solve(grid, i, j + 1);
}
}
本文介绍了一个算法问题:在一个由'1'(陆地)和'0'(水域)组成的二维网格中,通过遍历和标记的方法来计算岛屿的数量。岛屿是由相邻的陆地水平或垂直连接而成,并被水域包围。
949

被折叠的 条评论
为什么被折叠?



