class Solution(object):
def maxDistance(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
n,m=len(grid),len(grid[0])
cnt=0
visited=[[0]*m for _ in range(n)]
minDis=[[999999]*m for _ in range(n)]
q=[]
for i in range(n):
for j in range(m):
if grid[i][j]==1:
visited[i][j]=1
minDis[i][j]=0
q.append((i,j))
cnt=cnt+1
#是否全部是海洋陆地
if cnt==0 or cnt==m*m:
return -1
ans = 0
while q:
x,y=q.pop(0) #取出队首元素
for i,j in [(x+1,y),(x-1,y),(x,y+1),(x,y-1)]:
if 0<=i<n and 0<=j<m and visited[i][j]==0:
q.append((i,j))
visited[i][j]=1
minDis[i][j]=minDis[x][y]+1
ans=max(ans,minDis[i][j])
return ans
20200319-leetcode-1162. 地图分析(BFS)
最新推荐文章于 2022-08-12 23:39:44 发布