题解 | #岛屿数量#

岛屿数量

http://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e

// 栈实现深度优先遍历 dfs
class Solution {
public:
    int solve(vector<vector<char>>& grid) {
        int m = grid.size(), n = grid[0].size();
        int count =0;
        for(int i=0; i<m; i++) {
            for(int j=0; j<n; j++) {
                if(grid[i][j]!='0') {
                    dfs(grid, i, j);
                    count ++;
                }
            }
        }
        return count;
    }

    void dfs(vector<vector<char>>& grid, int x, int y) {
        int m = grid.size(), n= grid[0].size();
        if(x<0 || x>=m || y<0 || y>=n || grid[x][y]=='0')
            return ;

        grid[x][y] = '0';
        int dx[4] = {0,0,-1,1};
        int dy[4] = {1,-1,0,0};
        for(int i=0; i<4; i++) {
           dfs(grid, x+dx[i], y+dy[i]);
        }

        return ;
    }
};
// 队列实现广度优先遍历 bfs
class Solution {
public:
    int solve(vector<vector<char>>& grid) {
        int m = grid.size(), n = grid[0].size();
        int count =0;
        for(int i=0; i<m; i++) {
            for(int j=0; j<n; j++) {
                if(grid[i][j]=='1') {
                    bfs(grid, i, j);
                    count ++;
                }
            }
        }
        return count;
    }

    void bfs(vector<vector<char>>& grid, int x, int y) {
        int m = grid.size(), n = grid[0].size();
        queue<vector<int>> que;
        que.push({x, y});
        while(!que.empty()) {
            vector<int> v = que.front(); que.pop();
            x = v[0]; y = v[1];
            if(x>=0 && x<m && y>=0 && y<n && grid[x][y]!='0') {
                grid[x][y] = '0';
                int dx[4] = {0,0,-1,1};
                int dy[4] = {1,-1,0,0};
                for(int i=0; i<4; i++) {
                    que.push({x+dx[i], y+dy[i]});
                }
            }            
        }
        return ;
    }
};
全部评论

相关推荐

昨天 09:08
裁应届生,一分钱补偿没有,离职了还脑控你,跟踪你,定位你,丁东服务是搞系每一个人
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 9人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
6 收藏 评论
分享
牛客网
牛客企业服务