思路是这样的:做一个stack,然后在constructor方法中将nestedList中所有元素都添加到这个stack中(最后的元素在最底下)。hasNext方法中,如果stack空了,返回false,否则,先看栈顶元素是否为int,若不为int则getlist再将所有元素压入栈中。如果是int则退出循环
public class NestedIterator implements Iterator<Integer> {
Stack<NestedInteger> stack = new Stack();
public NestedIterator(List<NestedInteger> nestedList) {
// add element to
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 curr = stack.peek();
if (curr.isInteger()) {
return true;
}
else {
stack.pop();
for (int i = curr.getList().size() - 1; i >=0; i--) {
stack.push(curr.getList().get(i));
}
}
}
return false;
}
}
本文介绍了一种使用栈来实现嵌套列表迭代器的方法。该迭代器能够遍历包含多层嵌套列表的数据结构,并按顺序返回每一个整数元素。通过在构造函数中预处理数据,将所有元素逆序压入栈,可以高效地支持next和hasNext操作。
1590

被折叠的 条评论
为什么被折叠?



