200. 岛屿数量

2023.11.3

200. 岛屿数量_第1张图片

         本题使用深度优先搜索策略来求解。  首先回想二叉树的dfs,有两个关键点:①需要访问相邻节点,二叉树中即左右孩子节点。 ②需要给出中止条件,二叉树中即判断当前节点是否为空。

而图的dfs可以仿照二叉树的方法:首先相邻节点有个四个:上下左右。 中止条件即当前坐标的上下左右都不越界即可。  最后,遍历过的陆地节点,需要将其进行标记,我这里标记为‘2’。 

        java代码如下:

class Solution {
    public void dfs(char[][] grid, int row, int col){
        if(row<0 || col<0 || row>=grid.length || col>=grid[0].length || grid[row][col]=='0' || grid[row][col]=='2') return;
        grid[row][col] = '2'; //已经走过的陆地做标记
        dfs(grid,row+1,col);
        dfs(grid,row,col+1);
        dfs(grid,row-1,col);
        dfs(grid,row,col-1);
    }
    public int numIslands(char[][] grid) {
        int ans = 0;
        for(int i=0; i

你可能感兴趣的:(leetcode专栏,深度优先,算法,java,数据结构)