Advertisement
exmkg

Untitled

Feb 13th, 2025
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.86 KB | None | 0 0
  1. class Solution {
  2.     public boolean canReach(int[] arr, int start) {
  3.         int n = arr.length;
  4.         boolean visited[] = new boolean[n];
  5.         Queue<Integer> queue = new LinkedList<>();
  6.         queue.offer(start);
  7.         while (!queue.isEmpty()) {
  8.             int current = queue.poll();
  9.             if (arr[current] == 0) {
  10.                 return true;
  11.             }
  12.             int left = current - arr[current];
  13.             int right = current + arr[current];
  14.             if (left >= 0 && !visited[left]) {
  15.                 visited[left] = true;
  16.                 queue.offer(left);
  17.             }
  18.             if (right < n && !visited[right]) {
  19.                 visited[right] = true;
  20.                 queue.offer(right);
  21.             }
  22.         }
  23.         return false;
  24.     }
  25. }
  26.  
  27. /*
  28.     arr = [4,2,3,0,3,1,2], start = 5
  29.    
  30.     queue.offer(5)
  31.    
  32.     {
  33.         current = 5
  34.         arr[5] -> 1
  35.         left = 5 - 1 = 4
  36.         right = 5 + 1 = 6
  37.        
  38.         visited[4] = true
  39.         queue.offer(4)
  40.  
  41.         visited[6] = true
  42.         queue.offer(6)
  43.  
  44.         // queue   = [4, 6]
  45.         // visited = [0, 0, 0, 0, 1, 1, 1]
  46.     }
  47.     {
  48.         current = 4
  49.         arr[4] -> 3
  50.         left = 4 - 3 = 1
  51.         right = 4 + 3 = 7
  52.  
  53.         visited[1] = true
  54.         queue.offer(1)
  55.  
  56.         // queue = [6, 1]
  57.         // visited = [0, 1, 0, 0, 1, 1, 1]
  58.     }
  59.     {
  60.         current = 6
  61.         arr[6] -> 2
  62.         left = 6 - 2 = 4
  63.         right = 6 + 2 = 8
  64.  
  65.         // queue = [1]
  66.         // visited = [0, 1, 0, 0, 1, 1, 1]
  67.     }
  68.     {
  69.         current = 1
  70.         arr[1] -> 2
  71.         left = 1 - 2 = -1
  72.         right = 1 + 2 = 3
  73.  
  74.         visited[3] = true
  75.         queue.offer(3)
  76.  
  77.         // queue = [3]
  78.         // visited = [0, 1, 0, 1, 1, 1, 1]
  79.     }
  80.     {
  81.         current = 3
  82.         arr[1] -> 0
  83.         return true
  84.     }
  85. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement