关于岛屿的相似题目:
class CountSubIslands:
"""
floodFill 算法
1905. 统计子岛屿
https://leetcode.cn/problems/count-sub-islands/
"""
def solution(self, grid1: List[List[str]], grid2: List[List[str]]) -> int:
m, n = len(grid1), len(grid1[0])
for i in range(m):
for j in range(n):
# 这个岛屿肯定不是⼦岛,淹掉
if grid1[i][j] == 0 and grid2[i][j] == 1:
self.dfs_matrix(grid2, i, j)
# 现在 grid2 中剩下的岛屿都是⼦岛,计算岛屿数量
res = 0
for i in range(m):
for j in range(n):
if grid2[i][j] == 1:
res += 1
self.dfs_matrix(grid2, 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] == 0:
return
grid[i][j] = 0
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) # 右