题解 | #岛屿数量#

岛屿数量

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

class Solution {
public:
    vector<vector<char>> g;
    int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};  // 上下左右向量
    int solve(vector<vector<char>>& grid) {
        g = grid;
        int cnt = 0;
        // 遍历二维矩阵
        for (int i = 0; i < g.size(); i ++ )
            for (int j = 0; j < g[i].size(); j ++ )
                if (g[i][j] == '1') {
                    dfs(i, j);
                    cnt ++ ;  // 岛屿数量++
                }

        return cnt;
    }

    void dfs(int x, int y) {
        g[x][y] = 0;
        for (int i = 0; i < 4; i ++ ) {  // 枚举xy四个方向
            int a = x + dx[i], b = y + dy[i];  // 求当前第i个方向坐标
            if (a >= 0 && a < g.size() && b >= 0 && b < g[a].size() && g[a][b] == '1')  // 如果a和b没有越界 并且 ab格子是1就继续递归
                dfs(a, b);
        }
    }
};
#岛屿数量#
全部评论

相关推荐

投递拓竹科技等公司10个岗位
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务