- 深度遍历
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
count = 0
self.grid = grid
self.row = len(self.grid)
self.col = len(self.grid[0])
def dfs(i, j):
if not (0 <= i <self.row) or not(0 <= j < self.col):# 越界
return
if self.grid[i][j] == '0': # ‘0’(水)边界
return
self.grid[i][j] = '0' # 已经计数过的或者相连的'1'标记下
dfs(i+1, j) # 下
dfs(i, j+1) # 右
dfs(i, j-1) # 左
dfs(i-1, j) # 上
for i in range(self.row):
for j in range(self.col):
if self.grid[i][j] == "1":
count += 1 # 计数
dfs(i, j)
return count
参考链接:200. 岛屿数量(DFS / BFS)