Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. import java.util.*;
  2.  
  3.  
  4. class Solution {
  5. public int brokenCalc(int X, int Y) {
  6. List<Integer> isVisited = new ArrayList<Integer>();
  7. Queue<Integer> Q = new LinkedList<Integer>();
  8. Q.add(X);
  9. int num = runBFS(Y, Q, isVisited);
  10. return num;
  11. }
  12.  
  13. private int runBFS(int Y, Queue<Integer> Q, List<Integer> isVisited) {
  14. int numNodesInCurrLevel = 1;
  15. int numNodesNextLevel = 0;
  16. int level = 0;
  17. while (!Q.isEmpty()) {
  18. int X = Q.remove();
  19. //System.out.println("X " + X + " " + level);
  20. if (X == Y) {
  21. break;
  22. }
  23. isVisited.add(X);
  24. numNodesInCurrLevel--;
  25. if (X > 1) {
  26. if (!isVisited.contains(X-1)) {
  27. Q.add(X - 1);
  28. numNodesNextLevel++;
  29. }
  30. }
  31. if (X < Y) {
  32. if (!isVisited.contains(2*X)) {
  33. Q.add(2*X);
  34. numNodesNextLevel++;
  35. }
  36. }
  37. if (numNodesInCurrLevel == 0) {
  38. numNodesInCurrLevel = numNodesNextLevel;
  39. numNodesNextLevel = 0;
  40. level++;
  41. }
  42. }
  43. return level;
  44. }
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement