leetcode341-扁平化嵌套列表迭代器

原题

给定一个嵌套的整型列表。设计一个迭代器,使其能够遍历这个整型列表中的所有整数。

列表中的项或者为一个整数,或者是另一个列表。

示例1:

输入: [[1,1],2,[1,1]] 输出: [1,1,2,1,1] 解释: 通过重复调用 next 直到 hasNext 返回false,next 返回的元素的顺序应该是: [1,1,2,1,1]。

示例2:

输入: 14
输出: False
解释: 通过重复调用 next 直到 hasNext 返回false,next 返回的元素的顺序应该是: [1,4,6]。

解法

思想

构造通过递归构造,获取元素就是通用迭代器的方法。

代码

public class NestedIterator implements Iterator<Integer> {
    List<Integer> list = new ArrayList<>();
    int cur = 0;
    public NestedIterator(List<NestedInteger> nestedList) {
        addViaList(nestedList);
    }
    public void addViaList(List<NestedInteger> nestedList){
        for(NestedInteger i:nestedList){
            if(i.isInteger()) list.add(i.getInteger());
            else addViaList(i.getList()); 
        }
    }

    @Override
    public Integer next() {
        return list.get(cur++);
    }

    @Override
    public boolean hasNext() {
        return cur<list.size();
    }
}

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode341-%e6%89%81%e5%b9%b3%e5%8c%96%e5%b5%8c%e5%a5%97%e5%88%97%e8%a1%a8%e8%bf%ad%e4%bb%a3%e5%99%a8/

发表评论

电子邮件地址不会被公开。