341. 扁平化嵌套列表迭代器

2021-06-09 22:07:10 浏览数 (1)

给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。 列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。 示例 1: 输入: [[1,1],2,[1,1]] 输出: [1,1,2,1,1] 解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。 主要是联系一下简单递归, 题目不是特别好,可以做!

代码语言:javascript复制
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他
           }
       }
    }
}

0 人点赞