Zigzag Iterator
v1 = [1, 2] v2 = [3, 4, 5, 6] By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1, 3, 2, 4, 5, 6].
- Time: O(n)
- Space: O(1)
public class ZigzagIterator {
private Iterator<Integer> i, j;
public ZigzagIterator(List<Integer> v1, List<Integer> v2) {
i = v2.iterator();
j = v1.iterator();
}
public int next() {
if (j.hasNext()) {
Iterator<Integer> tmp = j;
j = i;
i = tmp;
}
return i.next();
}
public boolean hasNext() {
return i.hasNext() || j.hasNext();
}
}