lifeiteng

281. Zigzag Iterator

Sep 12th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.96 KB | None | 0 0
  1. public class ZigzagIterator {
  2.    
  3.     List<List<Integer>> lists = new ArrayList<>();
  4.     Queue<int[]> q = new LinkedList<>();
  5.     public ZigzagIterator(List<Integer> v1, List<Integer> v2) {
  6.         lists.add(v1);
  7.         lists.add(v2);
  8.         for(int i = 0; i < lists.size(); i++)
  9.         {
  10.             List<Integer> list = lists.get(i);
  11.             if(list.size() > 0) q.offer(new int[]{i, 0});
  12.         }
  13.     }
  14.  
  15.     public int next() {
  16.         if(!hasNext()) return -1;
  17.         int[] poll = q.poll();
  18.         int val = lists.get(poll[0]).get(poll[1]);
  19.         if(lists.get(poll[0]).size() > poll[1] + 1)
  20.         {
  21.             poll[1] += 1;
  22.             q.offer(poll);
  23.         }
  24.         return val;
  25.     }
  26.  
  27.     public boolean hasNext() {
  28.         return !q.isEmpty();
  29.     }
  30. }
  31.  
  32. /**
  33.  * Your ZigzagIterator object will be instantiated and called as such:
  34.  * ZigzagIterator i = new ZigzagIterator(v1, v2);
  35.  * while (i.hasNext()) v[f()] = i.next();
  36.  */
Add Comment
Please, Sign In to add comment