BFS
Time O(n²) Space O(n²)dist[0][0] = 1. BFS over 8 neighbours that are 0 and unvisited. Return dist at the bottom-right.
import java.util.*;
class Solution {
public int shortestPathBinaryMatrix(int[][] grid) {
int n = grid.length;
if (grid[0][0] == 1 || grid[n - 1][n - 1] == 1) return -1;
int[][] dist = new int[n][n];
dist[0][0] = 1;
Deque<int[]> q = new ArrayDeque<>();
q.offer(new int[]{0, 0});
while (!q.isEmpty()) {
int[] cell = q.poll();
int r = cell[0], c = cell[1];
if (r == n - 1 && c == n - 1) return dist[r][c];
for (int dr = -1; dr <= 1; dr++)
for (int dc = -1; dc <= 1; dc++) {
int nr = r + dr, nc = c + dc;
if (nr < 0 || nc < 0 || nr >= n || nc >= n || grid[nr][nc] == 1 || dist[nr][nc] != 0) continue;
dist[nr][nc] = dist[r][c] + 1;
q.offer(new int[]{nr, nc});
}
}
return -1;
}
}Verdict: Standard grid BFS.