1091. Shortest Path in Binary Matrix
class Solution:
def shortestPathBinaryMatrix(self, grid: List[List[int]]) -> int:
n=len(grid)
q=deque()
if grid[0][0]==1:return -1
q.append((0,0,1))
while q:
x,y,ln=q.popleft()
# print(x,y,ln)
if x==n-1==y:return ln
for i in range(-1,2):
for j in range(-1,2):
if i==0 and j==0:continue
x1=x+i
y1=y+j
if x1<0 or y1<0 or x1>=n or y1>=n:continue
# print(x1,y1,grid[x1][y1])
if grid[x1][y1]==1:continue
grid[x1][y1]=1
# print(x1,y1,ln+1)
q.append((x1,y1,ln+1))
return -1