Zigzag Iterator
Leetcode #281 | Medium | Очередь
Идея
Либо очередь хода, либо очередь итераторов
Big-O
- Время
O(1) - Память
O(K)
K - количество векторов (в данной задаче - 2)
Код
public class ZigzagIterator {
private Queue<Iterator<Integer>> q = new ArrayDeque<>();
public ZigzagIterator(List<Integer> v1, List<Integer> v2) {
if (!v1.isEmpty()) q.offer(v1.iterator());
if (!v2.isEmpty()) q.offer(v2.iterator());
}
public int next() {
Iterator<Integer> it = q.poll();
int val = it.next();
if (it.hasNext()) q.offer(it);
return val;
}
public boolean hasNext() { return !q.isEmpty(); }
}