美文网首页
200. 岛屿数量

200. 岛屿数量

作者: HamletSunS | 来源:发表于2019-08-10 14:41 被阅读0次

    我的思路:

    • 采用深度优先搜索,把附近为1的全部进行标记。
    • 对每一个格子遍历进行遍历,若为1且没被标记,则ret++

    借鉴:

    • 可以使用BFS,即标记附近的格子的时候采用bfs去遍历(若当前格子为1,则放入周围所有为1的格子,并标记)
    • 可以采用并查集(没看)
    class Solution {
    public:
        int numIslands(vector<vector<char>>& grid) {
            ret=0;        
            row=grid.size();
            if(row==0)
                return ret;
            col=grid[0].size();
            if(col==0)
                return 0;
            used=vector<vector<bool>>(row,vector<bool>(col,false));
            for(int i=0;i<row;i++)
                for(int j=0;j<col;j++){
                    if(used[i][j]==false && grid[i][j]=='1'){
                        ret++;
                        getNum(grid,used,i,j);
                    }
                }
            
            return ret;
            
        }
    private:
        vector<vector<bool>> used;
        int ret,row,col;
        void getNum(vector<vector<char>> &grid,vector<vector<bool>> &used,int x,int y){
            if(x<0||x>=row||y<0||y>=col||grid[x][y]=='0')
                return ;
            if(grid[x][y]== '1' && used[x][y]==false){
                used[x][y]=true;
                getNum(grid,used,x+1,y);
                getNum(grid,used,x-1,y);
                getNum(grid,used,x,y+1);
                getNum(grid,used,x,y-1);
    
            }
        };
    };
    

    相关文章

      网友评论

          本文标题:200. 岛屿数量

          本文链接:https://www.haomeiwen.com/subject/mudrjctx.html