Leetcode 1380 Solution
This article provides solution to leetcode question 1380 (number-of-closed-islands)
Access this page by simply typing in "lcs 1380" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/number-of-closed-islands
Solution
class Solution:
def closedIsland(self, grid: List[List[int]]) -> int:
visited = {}
m = len(grid)
n = len(grid[0])
def check_closed_island(i, j):
nonlocal grid
nonlocal visited
nonlocal m
nonlocal n
if (i, j) in visited:
return visited[(i, j)]
res = True
visited[(i, j)] = res
if i == 0 or i == m - 1 or j == 0 or j == n - 1:
res = False
else:
neighbor_nodes = [
(i - 1, j),
(i, j - 1),
(i, j + 1),
(i + 1, j),
]
for i2, j2 in neighbor_nodes:
res &= (grid[i2][j2] == 1 or check_closed_island(i2, j2))
visited[(i, j)] = res
return res
ans = 0
for i in range(m):
for j in range(n):
if (i, j) in visited or grid[i][j] == 1:
continue
if check_closed_island(i, j):
ans += 1
return ans