leetcode-200. 岛屿数量

 

 

class Solution {
public:
    int numIslands(vector<vector<char>>& grid) {
        int row = grid.size();
        int col = grid[0].size();
        if(row==0)
            return 0;
        int count = 0; // 岛屿的数量
        for(int i = 0; i < row; i++)
            for(int j = 0; j < col; j++){
                if(grid[i][j] == '1'){
                    count++;
                    dfs(grid, i, j);
                }
            }
        return count;
    }
    void dfs(vector<vector<char>> &grid, int i, int j){ 
        // 注意此处需要引用
        //   
        int row = grid.size();
        int col = grid[0].size();

        grid[i][j] = '0';  // 访问过就置为0
        if(i-1 >= 0&&grid[i-1][j]=='1') dfs(grid, i-1, j);
        if(i+1 < row&&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(j+1 < col&&grid[i][j+1]=='1') dfs(grid, i, j+1);

    }
};

 

posted @ 2021-07-22 16:42  三一一一317  阅读(40)  评论(0)    收藏  举报