代码语言:javascript复制给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。 列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。 示例 1: 输入: [[1,1],2,[1,1]] 输出: [1,1,2,1,1] 解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。 主要是联系一下简单递归, 题目不是特别好,可以做!
public class NestedIterator implements Iterator<Integer> {
List<Integer> list=new ArrayList();
Iterator<Integer> iter;
/**
思路遍历这个nestLIst,放到集合里面,返回集合的iterator即可
*/
public NestedIterator(List<NestedInteger> nestedList) {
dfs(nestedList);
iter=list.iterator();
}
@Override
public Integer next() {
return iter.next();
}
@Override
public boolean hasNext() {
return iter.hasNext();
}
public void dfs(List<NestedInteger> nestedList){
for(NestedInteger nest:nestedList){
if(nest.isInteger()){
//isInteger getInteger getList这个方法已经利扣他给写好了
list.add(nest.getInteger());
}else{
dfs(nest.getList());//说明他是列表, 继续dfs他
}
}
}
}