DFS
思路:
step1.先把grid2中是陆地但grid1中是海洋的岛变成海洋
step2.再统计grid2中岛屿的数量
Python
class Solution:
def countSubIslands(self, grid1: List[List[int]], grid2: List[List[int]]) -> int:
res = 0
m, n = len(grid1), len(grid1[0])
# step1.先把grid2中是陆地但grid1中是海洋的岛变成海洋
for i in range(m):
for j in range(n):
if grid2[i][j] == 1 and grid1[i][j] == 0:
self.dfs(grid2, i, j)
# step2.再统计grid2中岛屿的数量
for i in range(m):
for j in range(n):
if grid2[i][j] == 1:
self.dfs(grid2, i, j)
res += 1
return res
def dfs(self, grid, i, j):
if (i < 0 or i >= len(grid)
or j < 0 or j >= len(grid[0])
or grid[i][j] == 0):
return
grid[i][j] = 0
self.dfs(grid, i-1, j)
self.dfs(grid, i+1, j)
self.dfs(grid, i, j-1)
self.dfs(grid, i, j+1)