题目
岛屿数量 题目链接 官方题解
关键词
队列,广度优先搜索
代码记录
class Solution:
def numIslands(self
, grid
: List
[List
[str]]) -> int:
from collections
import deque
m
,n
= len(grid
),len(grid
[0])
visited
={}
res
=0
for i
in range(m
):
for j
in range(n
):
if grid
[i
][j
]=='1' and str(i
)+'-'+str(j
) not in visited
:
res
+= 1
queue
=deque
([(i
,j
)])
visited
[str(i
)+'-'+str(j
)]=1
while queue
:
cur
=queue
.popleft
()
to_search
=[(max(cur
[0]-1,0),cur
[1]),(min(cur
[0]+1,m
-1),cur
[1]),(cur
[0],max(cur
[1]-1,0)),(cur
[0],min(cur
[1]+1,n
-1))]
for node
in to_search
:
if str(node
[0])+'-'+str(node
[1]) not in visited
:
visited
[str(node
[0])+'-'+str(node
[1])]=1
if grid
[node
[0]][node
[1]]=='1':
queue
.append
((node
[0],node
[1]))
return res
转载请注明原文地址: https://lol.8miu.com/read-34673.html