目录

leecode200.岛屿数量

目录

leecode200.岛屿数量

https://i-blog.csdnimg.cn/direct/e1489c7070f44bfd9f89047fc1bfedfc.png

相当于求解图有几个连通分量

class Solution {
private:
    void numIslands(vector<vector<char>>& grid,vector<vector<bool>>& visited,int x,int y){
        if(x<0||y<0||x>=grid.size()||y>=grid[0].size())
            return;
        else if(grid[x][y]=='0'||visited[x][y])
            return;
        else{
            visited[x][y]=true;
            numIslands(grid,visited,x,y+1);
            numIslands(grid,visited,x+1,y);
            numIslands(grid,visited,x,y-1);
            numIslands(grid,visited,x-1,y);
        }
    }
public:
    int numIslands(vector<vector<char>>& grid) {
        int result=0;
        int m=grid.size(),n=grid[0].size();
        vector<vector<bool>> visited(m,vector<bool>(n,false));
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++){
                if(grid[i][j]=='1'&&!visited[i][j]){
                    result++;
                    numIslands(grid,visited,i,j);
                }
            }
        return result;
    }
};