统计封闭岛屿的数目

1254. 统计封闭岛屿的数目

关于岛屿的相似题目:

  1. 岛屿数量 – 二维矩阵的dfs算法
  2. 封闭岛屿数量 – 二维矩阵的dfs算法
  3. 统计封闭岛屿的数目
  4. 统计子岛屿
  5. 不同岛屿的数量

class MaxAreaOfIsland:
    """
    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])

        # 遍历grid,就是所有的封闭岛屿
        for i in range(m):
            for j in range(n):
                if grid[i][j] == 1:
                    res = max(res, 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 0

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

        grid[i][j] = 0
        return 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) + 1


你可能感兴趣的:(数据结构与算法,LeetCode,dfs)