题解 | #岛屿数量#DFS

岛屿数量

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

BFS或者DFS均可,DFS使用递归代码量稍少一些

class Solution {
public:
    vector<int> directions{-1, 0, 1, 0, -1};

    int solve(vector<vector<char> > &grid) {
        if (grid.empty() || grid[0].empty()) return 0;
        int cnt = 0;
        
        int sz_l = grid.size();
        int sz_h = grid[0].size();
        for (int i = 0; i < sz_l; ++i) {
            for (int j = 0; j < sz_h; ++j) {
                if (grid[i][j] == '0') continue;
                dfs(grid, i, j);
                ++cnt;
            }
        }
        return cnt;
    }
    
    void dfs(vector<vector<char>> &grid, int i, int j) {
        if (grid[i][j] == '0') return ;
        grid[i][j] = '0';
        for (int d = 0; d < 4; ++d) {
            if (i + directions[d] >= 0 && i + directions[d] < grid.size() && \
                j + directions[d + 1] >= 0 && j + directions[d + 1] < grid[0].size()) {
                dfs(grid, i + directions[d], j + directions[d + 1]);
            }
        }
    }
};

全部评论

相关推荐

牛至超人:把哈工大,再加大加粗,看见闪闪发光的哈工大字样,面试官直接流口水
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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