算法-DFS-岛屿的数量

在这里插入图片描述

此题的思路在于每一次DFS操作完后都是对岛屿的一次遍历,所以只需要统计dfs的次数就行了

class Solution {
    
    
    public int numIslands(char[][] grid) {
    
    
        int ans = 0;

        for(int r = 0; r < grid.length; r++) {
    
    
            for(int c = 0; c < grid[0].length; c++) {
    
    
                if(grid[r][c] == '1') {
    
    
                    ans++;
                    dfs(grid, r, c);
                }
            }
        }

        return ans;

    }


    public void dfs(char[][] grid, int r, int c) {
    
    
        if(!(0 <= r && r < grid.length && 0 <= c && c < grid[0].length)) {
    
    
            return;
        }

        if(grid[r][c] == '0') {
    
    
            return;
        }

        if(grid[r][c] == '2') {
    
    
            return;
        }

        grid[r][c] = '2';

        dfs(grid, r + 1, c);
        dfs(grid, r - 1, c);
        dfs(grid, r, c + 1);
        dfs(grid, r, c - 1);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45100361/article/details/113110994