https://leetcode.com/problems/flatten-nested-list-iterator/#/description
迭代器都是先调用hasNext再调用next,因此保证stack最顶上的一个是Integer即可
public class NestedIterator implements Iterator<Integer> {
Stack<NestedInteger> stack;
public NestedIterator(List<NestedInteger> nestedList) {
stack = new Stack();
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() {
while (!stack.isEmpty()) {
NestedInteger nest = stack.peek();
if (nest.isInteger()) {
return true;
}
nest = stack.pop();
for (int i = nest.getList().size() - 1; i >= 0; i--) {
stack.push(nest.getList().get(i));
}
}
return false;
}
}