封闭岛屿结合面积,是封闭岛屿就加上面积,不是就不是飞地
def numEnclaves(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
def dfs(closed,x,y):
count = 1
if x == 0 or x == len(grid)-1 or y == 0 or y == len(grid[0])-1:
closed = False
stack = [[x,y]]
grid[x][y] = 0
while stack:
x,y = stack.pop(0)
for nx,ny in [[x,y+1],[x,y-1],[x+1,y],[x-1,y]]:
if 0 <= nx < len(grid) and 0 <= ny < len(grid[0]) and grid[nx][ny] == 1:
count += 1
grid[nx][ny] = 0
if nx == 0 or nx == len(grid)-1 or ny == 0 or ny == len(grid[0])-1:
closed = False
stack.append([nx,ny])
return closed,count
res = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
closed = True
closed,count = dfs(closed,i,j)
if closed:
res += count
return res