Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public boolean hasPath(int[][] maze, int[] start, int[] destination)
- {
- Queue<int[]> q = new LinkedList<>();
- q.offer(start);
- int m = maze.length, n = maze[0].length;
- boolean[][] visited = new boolean[m][n];
- int[] dx = {0, 1, 0, -1}, dy = {1, 0, -1, 0};
- while(!q.isEmpty())
- {
- int[] p = q.poll();
- int i = p[0], j = p[1];
- if(i == destination[0] && j == destination[1]) return true;
- if(visited[i][j]) continue;
- visited[i][j] = true;
- for(int k = 0; k < 4; k++)
- {
- int ni = i, nj = j;
- while(ni >= 0 && ni < m && nj >= 0 && nj < n && maze[ni][nj] == 0)
- {
- ni += dx[k];
- nj += dy[k];
- }
- ni -= dx[k];
- nj -= dy[k];
- if(!visited[ni][nj]) q.offer(new int[]{ni, nj});
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement