Advertisement
lyomann92

Race-Car

Mar 2nd, 2023 (edited)
604
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Solution {
  2.     public int racecar(int target) {
  3.         Queue<Pair<Integer, Integer>> queue = new LinkedList();
  4.         queue.add(new Pair(0, 1));
  5.         Map<Pair<Integer, Integer>, Integer> dist = new HashMap();
  6.         dist.put(new Pair(0, 1), 0);
  7.  
  8.         while (!queue.isEmpty()) {
  9.             Pair<Integer, Integer> node = queue.poll();
  10.             int pos = node.getKey(), spd = node.getValue();
  11.             if (pos == target) {
  12.                 return dist.get(node);
  13.             }
  14.             if (Math.abs(pos) > 20000) {
  15.                 continue;
  16.             }
  17.  
  18.             Pair<Integer, Integer>[] states = new Pair[2];
  19.             states[0] = new Pair(pos + spd, spd * 2);
  20.             states[1] = new Pair(pos, -spd / Math.abs(spd));
  21.  
  22.             for (Pair<Integer, Integer> state : states) {
  23.                 if (!dist.containsKey(state)) {
  24.                     dist.put(state, dist.getOrDefault(node, 0) + 1);
  25.                     queue.offer(state);
  26.                 }
  27.             }
  28.         }
  29.  
  30.         throw null;
  31.     }
  32. }
  33.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement