class Solution:
def closedIsland(self, grid: List[List[int]]) -> int:
m, n = len(grid), len(grid[0])
self.flag = True
res = 0
for i in range(m):
for j in range(n):
if grid[i][j] == 0:
self.flag = True
self.dfs(grid, i, j, m, n)
if self.flag:
res += 1
return res
def dfs(self, grid, i, j, m, n):
if i < 0 or i >= m or j < 0 or j >= n or grid[i][j] == 1:
return
if grid[i][j] == 0 and (i == 0 or i == m-1 or j == 0 or j == n-1):
self.flag = False
return
grid[i][j] = 1
self.dfs(grid, i-1, j, m, n)
self.dfs(grid, i+1, j, m, n)
self.dfs(grid, i, j-1, m, n)
self.dfs(grid, i, j+1, m, n)
class Solution:
def closedIsland(self, grid: List[List[int]]) -> int:
#定义dfs辅助函数
def dfs(grid, i, j):
if i < 0 or i >= m or j < 0 or j >= n or grid[i][j] == 1:
return
if grid[i][j] == 0 and (i == 0 or i == m-1 or j == 0 or j == n-1):
global flag #全局变量
flag = False
return
grid[i][j] = 1
dfs(grid, i-1, j)
dfs(grid, i+1, j)
dfs(grid, i, j-1)
dfs(grid, i, j+1)
m, n = len(grid), len(grid[0])
res = 0
for i in range(m):
for j in range(n):
if grid[i][j] == 0:
global flag #全局变量
flag = True
dfs(grid, i, j)
if flag:
res += 1
return res