封闭岛屿数量 -- 二维矩阵的dfs算法

1254. 统计封闭岛屿的数目

这道题和 岛屿数量 -- 二维矩阵的dfs算法 类似,区别在于不算边缘部分的岛屿,那其实很简单,把上⼀题中那些靠边的岛屿排除掉,剩下的就是「封闭岛屿」了。

关于岛屿的相似题目:

  1. 岛屿数量 -- 二维矩阵的dfs算法
  2. 封闭岛屿数量 -- 二维矩阵的dfs算法
  3. 统计封闭岛屿的数目
  4. 统计子岛屿
  5. 不同岛屿的数量
python 复制代码
class closedIsland:
    """
    floodFill 算法
    1254. 统计封闭岛屿的数目
    https://leetcode.cn/problems/number-of-closed-islands/
    """
    def solution(self, grid: List[List[str]]) -> int:
        res = 0
        m, n = len(grid), len(grid[0])
        for j in range(n):
            # 先把靠上边的岛屿淹掉
            self.dfs_matrix(grid, 0, j)
            # 先把靠下边的岛屿淹掉
            self.dfs_matrix(grid, m-1, j)

        for i in range(m):
            # 先把靠左边的岛屿淹掉
            self.dfs_matrix(grid, i, 0)
            # 先把靠右边的岛屿淹掉
            self.dfs_matrix(grid, i, n-1)

        # 遍历grid,就是所有的封闭岛屿
        for i in range(m):
            for j in range(n):
                if grid[i][j] == 0:
                    res += 1
                    self.dfs_matrix(grid, i, j)

        return res

    def dfs_matrix(self, grid, i, j):
        m, n = len(grid), len(grid[0])

        # 跳出递归条件
        if i < 0 or i >= m or j < 0 or j >= n:
            return

        if grid[i][j] == 1:
            return

        grid[i][j] = 1
        self.dfs_matrix(grid, i - 1, j)  # 上
        self.dfs_matrix(grid, i + 1, j)  # 下
        self.dfs_matrix(grid, i, j - 1)  # 左
        self.dfs_matrix(grid, i, j + 1)  # 右
相关推荐
sweetheart7-71 天前
LeetCode17. 电话号码的字母组合(2024秋季每日一题 59)
算法·深度优先·力扣·dfs
银氨溶液5 天前
力扣——113. 路径总和
数据结构·算法·leetcode·职场和发展·dfs·回溯
王老师青少年编程5 天前
CSP/信奥赛C++刷题训练:经典深搜例题(1):洛谷1605 :迷宫
c++·算法·dfs·深搜·csp·信奥赛
丶Darling.6 天前
代码随想录 | Day36 | 动态规划 :整数拆分&不同的二叉搜索树
c++·笔记·学习·算法·动态规划·dfs·记忆化搜索
C++oj19 天前
csp普及组算法集训--Dfs
c++·学习·数学·算法·dfs
一棵星22 天前
遍历有向图链路(DFS算法)- 优化版
java·算法·dfs·图搜索算法
Y_3_71 个月前
【回溯数独】有效的数独(medium)& 解数独(hard)
java·数据结构·windows·算法·dfs·回溯
LluckyYH1 个月前
代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会
算法·深度优先·动态规划·软件构建·图论·dfs
Mysticbinary1 个月前
深度DFS 和 广度BFS搜索算法学习
dfs·bfs·遍历算法·深度算法·广度算法
Aurora_th2 个月前
树与图的深度优先遍历(dfs的图论中的应用)
c++·算法·深度优先·图论·dfs·树的直径