200. Number of Islands
# Medium
Key idea: DFS
深度搜索,一旦碰到一个没有被访问过的‘1’
,遍深度搜索其上下左右,直到相邻的‘1’
全部搜索到,在相应的矩阵里标记visited,每深度遍历一次,res++
来记录有多少个新出现的‘1’即独立的岛。
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
res = 0
visit = []
for i in range(len(grid)):
tmp = [False for i in range(len(grid[0]))]
visit.append(tmp)
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == '0' or visit[i][j] == True:
continue
self.helper(grid, i, j, visit)
res += 1
# print(visit)
return res
def helper(self, grid, i, j, visit):
if i<0 or i>=len(grid) or j<0 or j>=len(grid[0]) or grid[i][j] == '0' or visit[i][j] == True:
return
visit[i][j] = True
self.helper(grid, i+1, j, visit)
self.helper(grid, i-1, j, visit)
self.helper(grid, i, j+1, visit)
self.helper(grid, i, j-1, visit)
Last updated
Was this helpful?