1091. Shortest Path in Binary Matrix
BFS
Input: grid = [[0,1],[1,0]]
Output: 2Input: grid = [[0,0,0],[1,1,0],[1,1,0]]
Output: 4Input: grid = [[1,0,0],[1,1,0],[1,1,0]]
Output: -1Last updated
BFS
Input: grid = [[0,1],[1,0]]
Output: 2Input: grid = [[0,0,0],[1,1,0],[1,1,0]]
Output: 4Input: grid = [[1,0,0],[1,1,0],[1,1,0]]
Output: -1Last updated
class Solution:
def shortestPathBinaryMatrix(self, grid: List[List[int]]) -> int:
q = deque()
n, m = len(grid), len(grid[0])
if grid[0][0] == 1:
return -1
q.append((0, 0, 1))
grid[0][0] = 1
dir = [(-1, 0), (1, 0), (0, -1), (0, 1),(-1,-1),(-1,1),(1,-1),(1,1)]
while q:
x,y,step = q.popleft()
if x == n - 1 and y == m - 1:
return step
for dx, dy in dir:
nx, ny = x + dx, y + dy
if 0<=nx<n and 0<=ny<m and grid[nx][ny] == 0:
q.append((nx, ny,step+1))
grid[nx][ny] = 1
return -1