美文网首页
200. Number of Islands

200. Number of Islands

作者: jluemmmm | 来源:发表于2021-01-23 15:47 被阅读0次

    找出二维数组中连成1组成的部分的数量。

    • 时间复杂度 O(MN)
    • 空间复杂度O(MN)

    dfs,对二维网格进行遍历,对其上下左右节点进行递归,将已经识别过的1处理成0,dfs最重要的是要找到退出条件,越过矩阵边界或元素本身为0

    • Runtime: 80 ms, faster than 93.00%
    • Memory Usage: 39.9 MB, less than 54.87%
    /**
     * @param {character[][]} grid
     * @return {number}
     */
    var numIslands = function(grid) {
        let m = grid.length
        let n = grid[0].length
        let res = 0
        if (m === 0 || n === 0) return res
        for (let i = 0; i < m; i++) {
            for (let j = 0; j < n; j++) {
                if(grid[i][j] === '1') {
                     res++
                     dfs(i, j, grid)
                }
            }
        }
        return res
    };
    
    var dfs = function(i, j, grid) {
        if(grid[i][j] === '0') return
        let m = grid.length
        let n = grid[0].length
        grid[i][j] = '0'
        if (i - 1 >= 0 && grid[i - 1][j]) dfs(i - 1, j, grid)
        if (i + 1 < m && grid[i + 1][j]) dfs(i + 1, j, grid)
        if (j - 1 >= 0 && grid[i][j - 1]) dfs(i, j - 1, grid)
        if (j + 1 < n && grid[i][j + 1]) dfs(i, j + 1, grid)
        
    }
    

    相关文章

      网友评论

          本文标题:200. Number of Islands

          本文链接:https://www.haomeiwen.com/subject/pphuzktx.html