Skip to content

1254. 统计封闭岛屿的数目 ​

  • 题号:1254
  • 来源:LeetCode
  • 难度:中等
  • 标签:DFS 矩阵
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · O(m*n) 时间 · O(m*n) 空间 · 更新于 2026-09-27

DFS 淹没岛屿,不触边界则计数加一

typescript
/**
 * @difficulty medium
 * @tags DFS,矩阵
 * @time O(m*n)
 * @space O(m*n)
 * @note DFS 淹没岛屿,不触边界则计数加一
 * @1254. 统计封闭岛屿的数目
 */

let grid: number[][] =
 [
 [0,0,1,0,0],
 [0,1,0,1,0],
 [0,1,1,1,0]]
let res: number = 0
let arr: number[][] = []
let m: number = grid.length
let n: number = grid[0].length
const dfs = (i: number, j: number) => {
    if (i < 0 || i >= m || j < 0 || j >= n) { return }
    if (grid[i][j] !== 0) {
        return
    }
    arr.push([i, j])
    grid[i][j] = 2
    dfs(i - 1, j)
    dfs(i, j + 1)
    dfs(i + 1, j)
    dfs(i, j - 1)
}

const arrFn = () => {
    //console.log(arr)
    let isUpate: boolean = true
    for (let i = 0; i < arr.length; i++) {
        if (arr[i][0] === 0 || arr[i][1] === 0 || arr[i][0] === m - 1 || arr[i][1] === n - 1) {
            isUpate = false
        }
    }
    if (isUpate) {
        console.log(arr)
        res += 1
    }
    arr = []
}

for (let i = 0; i < m; i++) {
    for (let j = 0; j < n; j++) {
        if (grid[i][j] === 0) {
            dfs(i, j)
            arrFn()
        }
    }
}

console.log(res)

export {};

源码:ts/leetcode/1254. 统计封闭岛屿的数目.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm