Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class Solution {
- public int brokenCalc(int X, int Y) {
- List<Integer> isVisited = new ArrayList<Integer>();
- Queue<Integer> Q = new LinkedList<Integer>();
- Q.add(X);
- int num = runBFS(Y, Q, isVisited);
- return num;
- }
- private int runBFS(int Y, Queue<Integer> Q, List<Integer> isVisited) {
- int numNodesInCurrLevel = 1;
- int numNodesNextLevel = 0;
- int level = 0;
- while (!Q.isEmpty()) {
- int X = Q.remove();
- //System.out.println("X " + X + " " + level);
- if (X == Y) {
- break;
- }
- isVisited.add(X);
- numNodesInCurrLevel--;
- if (X > 1) {
- if (!isVisited.contains(X-1)) {
- Q.add(X - 1);
- numNodesNextLevel++;
- }
- }
- if (X < Y) {
- if (!isVisited.contains(2*X)) {
- Q.add(2*X);
- numNodesNextLevel++;
- }
- }
- if (numNodesInCurrLevel == 0) {
- numNodesInCurrLevel = numNodesNextLevel;
- numNodesNextLevel = 0;
- level++;
- }
- }
- return level;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement