刷题日记:岛屿数量

58 阅读1分钟
题目描述

image.png

题解
/**
 * @param {character[][]} grid
 * @return {number}
 */
var numIslands = function(grid) {
    // 深度优先搜索思路,遍历grid中的每一个数据,且对数据进行上下左右深度优先搜索,搜索时将遍历过的数据置为0,最终的结果是深度优先搜索的次数
    let res = 0
    let col = grid.length;
    let row = grid[0].length;
    const dfs = function(grid,i,j,col,row){
        if(i >= col || j >= row || i < 0 || j < 0 || grid[i][j] === '0'){ // 递归结束条件 坐标跑出边界 或者 遇到水
            return
        }
        grid[i][j] = '0' // 遍历过的置为'o'
        dfs(grid,i + 1,j,col,row)
        dfs(grid,i - 1,j,col,row)
        dfs(grid,i,j + 1,col,row)
        dfs(grid,i,j - 1,col,row)
    }
    // 遍历每一个网格数据
    for(let i = 0;i < col;i++){
        for(let j = 0;j < row;j++){
            if(grid[i][j] === '1'){
                res += 1
                dfs(grid,i,j,col,row)
            }
        }
    }
    return res
};