callmemark
Junior Member
Python:
class Solution:
def numEnclaves(self, grid: List[List[int]]) -> int:
m, n = len(grid), len(grid[0])
dirs = [(0,1), (0,-1), (1,0), (-1,0)]
def dfs(i, j):
nonlocal visit
if (
(i, j) in visit or
i < 0 or i >= m or
j < 0 or j >= n or
grid[i][j] == 0
): return 0
if i == 0 or i == m-1 or j == 0 or j == n-1:
return float('inf')
visit.add((i,j))
cnt = 1
for di, dj in dirs:
ni, nj = i + di, j + dj
cnt += dfs(ni, nj)
return cnt
visit = set()
ans = 0
for i in range(m):
for j in range(n):
if (i,j) not in visit and grid[i][j] == 1:
res = dfs(i, j)
if res != float('inf'):
ans += res
return ans