1 public class ZigzagIterator { 2 private List<Iterator<Integer>> iterators; 3 private int index; 4 public ZigzagIterator(List<Integer> v1, List<Integer> v2) { 5 index = 0; 6 iterators = new ArrayList<>(); 7 iterators.add(v1.iterator()); 8 iterators.add(v2.iterator()); 9 } 10 11 public int next() { 12 while (!iterators.get(index % iterators.size()).hasNext()) { 13 index++; 14 } 15 return iterators.get(index++ % iterators.size()).next(); 16 } 17 18 public boolean hasNext() { 19 for (Iterator<Integer> it : iterators) { 20 if (it.hasNext()) { 21 return true; 22 } 23 } 24 return false; 25 } 26 } 27 28 /** 29 * Your ZigzagIterator object will be instantiated and called as such: 30 * ZigzagIterator i = new ZigzagIterator(v1, v2); 31 * while (i.hasNext()) v[f()] = i.next(); 32 */
This is almost the version of K list iterators.