2
public int minimumJumps(int[] forbidden, int a, int b, int x) {5
Set<Integer> visited = new HashSet<Integer>();7
// Add forbidden coordinates to visited8
for (int i = 0; i < forbidden.length; i++) {9
visited.add(forbidden[i]);12
// Distance/ Jumps map13
Map<Integer, Integer> jumps = new HashMap<>();17
Queue<Integer[]> q = new LinkedList<>();18
q.add(new Integer[] {0, 1});21
while (q.size() != 0) {23
Integer[] ud = q.poll();25
int u = ud[0], d = ud[1];33
if (u + a < 6001 && !visited.contains(u + a)) {34
q.add(new Integer[] {u + a, 1});36
jumps.put(u + a, jumps.get(u) + 1);40
if (d != -1 && u - b > -1 && !visited.contains(u - b)) {41
q.add(new Integer[] {u - b, -1});42
jumps.put(u - b, jumps.get(u) + 1);