[leetcode刷题记录] 1254.统计封闭岛屿数量

原题链接:1254. 统计封闭岛屿的数目 - 力扣(LeetCode) (leetcode-cn.com)
考察知识点: dfs
解题思路与源代码:

/**
 * @param {number[][]} grid
 * @return {number}
 */

var closedIsland = function(grid) {
    // isBorder为是否超出边界 , resCount为封闭岛屿数量
    let isBorder = 0, resCount = 0;
    // 判断是否超界
    const isArea = (grid, row, col) => {
        if(row<0 || row>=grid.length || col<0 || col>=grid[0].length){
            return false
        }
        return true;
    }
    //dfs深度优先算法
    const dfsArea = (grid, row, col)=> {
        if (!isArea(grid, row, col)){
            isBorder++;
            return;
        }
        //如果不是陆地或者已经遍历过停止该方向遍历
        if(grid[row][col] != 0){
            return;
        }
        //遍历过后,记录已遍历标记为2
        grid[row][col] = 2;
        //四个方向进行遍历
        dfsArea(grid, row-1, col);
        dfsArea(grid, row, col+1);
        dfsArea(grid, row+1, col);
        dfsArea(grid, row, col-1);
    }

    for (let i=0; i<grid.length; i++){
        for (let j=0; j<grid[0].length; j++){
            if (grid[i][j] === 0){
                dfsArea(grid, i, j);
                if (isBorder === 0){
                    resCount++;
                }
                isBorder = 0;
            }
        }
    }

    return resCount;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容