Leetcode 200. 岛屿数量

class Solution {
public:
    int numIslands(vector<vector<char>>& grid) {
        int nr = grid.size();
        if(nr == 0) return 0;
        int nc = grid[0].size();
        
        int ans = 0;
        for(int i=0;i < nr;i++){
            for(int j=0;j < nc;j++){
                if(grid[i][j] == '1'){
                    ans++;
                    dfs(grid,i,j);
                }
            }
        }
        return ans;
    }

    void dfs(vector<vector<char>>& grid,int i,int j){
        int nr = grid.size();
        int nc = grid[0].size();
        grid[i][j] = '0';
        if((i-1) >= 0 && grid[i-1][j] == '1') dfs(grid,i-1,j);
        if((j-1) >= 0 && grid[i][j-1] == '1') dfs(grid,i,j-1);
        if((i+1) < nr && grid[i+1][j] == '1') dfs(grid,i+1,j);
        if((j+1) < nc && grid[i][j+1] == '1') dfs(grid,i,j+1);
    }
};

dfs

原文地址:https://www.cnblogs.com/cunyusup/p/14258483.html