x

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(); }
}
Left-click: follow link, Right-click: select node, Scroll: zoom
x