zoukankan      html  css  js  c++  java
  • (dfs) leetcode 200:Number of Islands

    思路:深度优先搜索,两层循环遍历一遍grid,若该网格为1则进行深度优先搜索并将走过的结点的visit置1,记录连接分量的个数。

    class Solution {
    public:
        void search(vector<vector<char>>& grid, int i, int j, vector<vector<int>>& visit){
            visit[i][j] = 1;
            int d[][2] = {{-1,0}, {1,0}, {0,-1}, {0,1}};
            for(auto& a:d){
                int nx = a[0]+i, ny = a[1]+j;
                if(nx>=0 && nx<grid.size() && ny>=0 && ny<grid[0].size() && visit[nx][ny]==0 && grid[nx][ny]=='1')
                    search(grid, nx, ny, visit);
            }
            
        }
        
        int numIslands(vector<vector<char>>& grid) {
            if(grid.empty() || grid[0].empty())
                return 0;
            vector<vector<int>> visit(grid.size(), vector<int>(grid[0].size(), 0));
            int res = 0;
            for(int i=0; i<grid.size(); ++i){
                for(int j=0; j<grid[0].size(); ++j){
                    if(grid[i][j] == '1' && visit[i][j]==0){
                        search(grid, i, j, visit);
                        res++;
                    }        
                }
            }
            return res;
        }
    
    };
  • 相关阅读:
    冲刺4
    冲刺3
    冲刺2
    冲刺一
    构建之法阅读笔记04
    数组02开发日志
    进度条第七周
    《构建之法》阅读问题
    软件工程概论第一节
    《大道至简》弟七八章读后感
  • 原文地址:https://www.cnblogs.com/Bella2017/p/11127473.html
Copyright © 2011-2022 走看看