美文网首页
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