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;
    }
}

results matching ""

    No results matching ""