力扣-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
,记为一次遍历,有多少次遍历就有多少个岛屿。