题目
给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。
思路
dfs
知识点:迭代器Iterator、List操作
代码
public class NestedIterator implements Iterator<Integer> {
private List<Integer> vals;
private Iterator<Integer> cur;
public NestedIterator(List<NestedInteger> nestedList) {
vals = new ArrayList<Integer>();
dfs(nestedList);
cur = vals.iterator();
}
@Override
public Integer next() {
return cur.next();
}
@Override
public boolean hasNext() {
return cur.hasNext();
}
public void dfs(List<NestedInteger> nestedList){
for(NestedInteger nest : nestedList){
// if 数字,则加入vals 否则获取下一个list
if(nest.isInteger()){
vals.add(nest.getInteger());
}else{
dfs(nest.getList());
}
}
}
}