20200406——第二百题 岛屿数量

class Solution {
    public int numIslands(char[][] grid) {
        if(grid == null ||grid.length ==0){
            return 0;
        }
        int nr = grid.length;
        int nc =grid[0].length;

        int nums = 0;
        for(int i = 0;i<nr;++i){
            for(int j =0;j<nc;++j){
                if(grid[i][j] == '1'){
                ++nums;
                dfs(grid,i,j);
                }
            }
        }
        return nums;
    }
    public void dfs(char[][] grid ,int r ,int c){
        //遍历,遍历过之后就置位'0'
        int nr = grid.length;
        int nc =grid[0].length;

        if(r<0 || c<0||r>=nr||c>=nc||grid[r][c] == '0'){
            return ;
        }
        grid[r][c] = '0';
        dfs(grid,r-1,c);
        dfs(grid,r+1,c);
        dfs(grid,r,c+1);
        dfs(grid,r,c-1);
    }
}

在这里插入图片描述

深度优先遍历,遍历过的地方,都设置为1

发布了955 篇原创文章 · 获赞 43 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_36344771/article/details/105352728