题目链接
岛屿数量
题目描述
注意点
- grid[i][j] 的值为 ‘0’ 或 ‘1’
解答思路
- 使用广度优先遍历思想遍历整个岛屿
- 遍历整个二维网络,如果此时位置处的值为1,则当前位置是一个岛的一部分,从该位置向着四个方向遍历出整个岛屿,若任意位置已被记录为岛的一部分,则将该位置重置为0,防止后续同一个位置多次判断
代码
class Solution {
public int numIslands(char[][] grid) {
int res = 0;
int row = grid.length;
int col = grid[0].length;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (grid[i][j] == '0') {
continue;
}
bfs(grid, i, j);
res++;
}
}
return res;
}
public void bfs(char[][] grid, int x, int y) {
if (x < 0 || x >= grid.length || y >= grid[0].length || y < 0 || grid[x][y] == '0') {
return;
}
grid[x][y] = '0';
bfs(grid, x + 1, y);
bfs(grid, x - 1, y);
bfs(grid, x, y + 1);
bfs(grid, x, y - 1);
}
}
关键点
- 广度优先遍历的思想
- 若任意位置已被记录为岛的一部分,则将该位置重置为0,防止后续同一个位置多次判断