LeetCode341. 扁平化嵌套列表迭代器

☆☆☆

public class NestedIterator implements Iterator<Integer> {
    /**
     * // 如果其中存的是一个整数,则返回 true,否则返回 false
     * public boolean isInteger();
     * // 如果其中存的是一个整数,则返回这个整数,否则返回 null
     * public Integer getInteger();
     * // 如果其中存的是一个列表,则返回这个列表,否则返回 null
     * public List<NestedInteger> getList();
     */
    Stack<NestedInteger> stack = new Stack<>();
    public NestedIterator(List<NestedInteger> nestedList) {
        for (int i = nestedList.size() - 1; i >= 0; i--) {
            stack.push(nestedList.get(i));
        }
    }

    @Override
    public Integer next() {
        return stack.pop().getInteger();
    }

    @Override
    public boolean hasNext() {
        if (stack.isEmpty()) return false;
        if (!stack.peek().isInteger()) {
            List<NestedInteger> temp = stack.pop().getList();
            for (int i = temp.size() - 1; i >= 0; i--) {
                stack.push(temp.get(i));
            }
            return hasNext(); // 注意此返回语句
        }else {
            return true;
        }
    }
}
原文地址:https://www.cnblogs.com/HuangYJ/p/14156849.html