题目:341. Flatten Nested List Iterator(https://leetcode.com/problems/flatten-nested-list-iterator/description/)
解法:
使用DFS先将所有的Integer存到一个List中,然后使用这个List的Iterator。
public class NestedIterator implements Iterator<Integer> {
private List<Integer> intList;
private Iterator<Integer> iter;
public NestedIterator(List<NestedInteger> nestedList) {
intList = new ArrayList<>();
flatten(nestedList);
iter = intList.iterator();
}
private void flatten(List<NestedInteger> nestedIntList) {
if (nestedIntList.isEmpty()) {
return;
} else {
for (NestedInteger nestedInt : nestedIntList) {
if (nestedInt.isInteger()) {
intList.add(nestedInt.getInteger());
} else {
flatten(nestedInt.getList());
}
}
}
}
@Override
public boolean hasNext() {
return iter.hasNext();
}
@Override
public Integer next() {
return iter.next();
}
}