题解 | #岛屿数量#

岛屿数量

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

DFS,将周边的全置为零即可

class Solution {
public:
    /**
     * 判断岛屿数量
     * @param grid char字符型vector<vector<>> 
     * @return int整型
     */
    void dfs(vector<vector<char> >& grid, int x, int y){
        int n = grid.size();
        int m = grid[0].size();
        if(x < 0 || y < 0 || x >= n || y >= m){
            return;
        }
        //自身位置处需要判定
        if(grid[x][y] == '0'){
            return;
        }
        //本题还有一种做法是用if来加条件限制,这个时候就不用上面的判定递归结束条件,因为如果都不满足if条件会自动退出递归
        grid[x][y] = '0';
        //四个方向遍历
        dfs(grid, x-1, y);
        dfs(grid, x+1, y);
        dfs(grid, x, y-1);
        dfs(grid, x, y+1);
    }
    int solve(vector<vector<char> >& grid) {
        // write code here
        int n = grid.size();
        if( n == 0){ //判空
            return 0;
        }
        int m = grid[0].size();
        int count = 0; //记录岛屿数量
        for(int i = 0; i < n; i++){ //遍历岛屿
            for(int j = 0; j < m; j++){
                if(grid[i][j] == '1'){
                    count++;
                    dfs(grid, i, j);
                }
            }
        }
        return count;
    }
};
全部评论

相关推荐

2025-12-31 14:19
门头沟学院 产品经理
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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