Zigzag Iterator
保存的可以是Iterator,然后根据保存的iterator本身的借口,可以判断是否还存在,并且同时很容易扩展到k个,只需要把每次检查的iterator重新夹到队伍的最后即可
public class ZigzagIterator {
// Better solution, 6ms
Queue<Iterator> q;
public ZigzagIterator(List<Integer> v1, List<Integer> v2) {
q = new LinkedList();
if (!v1.isEmpty()) q.offer(v1.iterator());
if (!v2.isEmpty()) q.offer(v2.iterator());
}
public int next() {
Iterator cur = q.poll();
int res = (int) cur.next();
if (cur.hasNext()) q.offer(cur);
return res;
}
public boolean hasNext() {
return q.peek() != null;
}
}