Advertisement
lifeiteng

490. The Maze

Nov 21st, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.01 KB | None | 0 0
  1. class Solution {
  2.     public boolean hasPath(int[][] maze, int[] start, int[] destination)
  3.     {
  4.         Queue<int[]> q = new LinkedList<>();
  5.         q.offer(start);
  6.         int m = maze.length, n = maze[0].length;
  7.         boolean[][] visited = new boolean[m][n];
  8.         int[] dx = {0, 1, 0, -1}, dy = {1, 0, -1, 0};
  9.         while(!q.isEmpty())
  10.         {
  11.             int[] p = q.poll();
  12.             int i = p[0], j = p[1];
  13.             if(i == destination[0] && j == destination[1]) return true;
  14.             if(visited[i][j]) continue;
  15.             visited[i][j] = true;
  16.             for(int k = 0; k < 4; k++)
  17.             {
  18.                 int ni = i, nj = j;
  19.                 while(ni >= 0 && ni < m && nj >= 0 && nj < n && maze[ni][nj] == 0)
  20.                 {
  21.                     ni += dx[k];
  22.                     nj += dy[k];
  23.                 }
  24.                 ni -= dx[k];
  25.                 nj -= dy[k];
  26.                 if(!visited[ni][nj]) q.offer(new int[]{ni, nj});
  27.             }
  28.         }
  29.         return false;
  30.     }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement