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.

posted on 2016-07-07 12:56  keepshuatishuati  阅读(180)  评论(0编辑  收藏  举报