完整教程:力扣-200.岛屿数量

题目链接

200.岛屿数量

class Solution
{
public void dfs(char[][] grid, int i, int j) {
int m = grid.length;
int n = grid[0].length;
if (i <
0 || i >= m || j <
0 || j >= n || grid[i][j] == '0')
return;
grid[i][j] = '0';
dfs(grid, i + 1, j);
dfs(grid, i - 1, j);
dfs(grid, i, j + 1);
dfs(grid, i, j - 1);
}
public int numIslands(char[][] grid) {
int res = 0;
int m = grid.length;
int n = grid[0].length;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == 1) {
res++;
dfs(grid, i, j);
}
}
}
}
}

小结:深度优先遍历,遍历到1的时候,向四周遍历并将该结点与所有与该结点相连的点置为0,记为一次遍历,有多少次遍历就有多少个岛屿。

posted @ 2025-08-19 16:33  yfceshi  阅读(8)  评论(0)    收藏  举报