Lập Trình Viên Số Khổ
Senior Member
Python:
class Solution:
def closedIsland(self, grid: List[List[int]]) -> int:
m = len(grid)
n = len(grid[0])
def dfs(node):
flag = True
visited.add(node)
x, y = node
if x == 0 or x == m - 1 or y == 0 or y == n - 1:
flag = False
directions = [(-1, 0), (1, 0), (0, 1), (0, -1)]
for u, v in directions:
if 0 <= x + u < m and 0 <= y + v < n and (x + u, y + v) not in visited and grid[x + u][y + v] == 0:
if not dfs((x + u, y + v)):
flag = False
return flag
visited = set()
res = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 0 and (i, j) not in visited:
if dfs((i, j)):
res += 1
return res