200. Number of Islands
solution
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
m = len(grid)
n = len(grid[0])
visited = [[False] * n for _ in range(m)]
dirs = [[0, 1], [1, 0], [0, -1], [-1, 0]]
res: int = 0
for i in range(m):
for j in range(n):
if grid[i][j] == '1' and not visited[i][j]:
res += 1
self.dfs(i, j, grid, dirs, visited)
return res
def dfs(self, i, j, grid, dirs, visited):
if grid[i][j] == '0' or visited[i][j]:
return
visited[i][j] = True
for dir in dirs:
new_i = i + dir[0]
new_j = j + dir[1]
if new_i < 0 or new_i >= len(grid) or new_j < 0 or new_j >= len(grid[0]):
continue
self.dfs(new_i, new_j, grid, dirs, visited)follow up-岛屿类
Last updated