题解 | #岛屿数量#

岛屿数量

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);
        }
    }
};
#岛屿数量#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-29 14:13
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-25 17:46
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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