思路:
遍历图中所有的位置,如果该位置为1,则向外扩展将与之相连的1全部变为0,记录需要进行扩展的1的个数。
代码:
from typing import List
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
def dfs(i, j):
if not 0 <= i < m or not 0 <= j < n or grid[i][j] == '0':
return
grid[i][j] = '0'
for x, y in [(i-1, j), (i+1, j), (i, j-1), (i, j+1)]:
dfs(x, y)
m, n = len(grid), len(grid[0])
ans = 0
for i in range(m):
for j in range(n):
if grid[i][j] == '1':
dfs(i, j)
ans += 1
return ans