首页 > 编程语言 > 详细

341. Flatten Nested List Iterator展开多层数组

时间:2020-09-12 10:59:58      阅读:58      评论:0      收藏:0      [点我收藏+]

Given a nested list of integers, implement an iterator to flatten it.

Each element is either an integer, or a list -- whose elements may also be integers or other lists.

Example 1:

Input: [[1,1],2,[1,1]]
Output: [1,1,2,1,1]
Explanation: By calling next repeatedly until hasNext returns false, 
             the order of elements returned by next should be: [1,1,2,1,1].

Example 2:

Input: [1,[4,[6]]]
Output: [1,4,6]
Explanation: By calling next repeatedly until hasNext returns false, 
             the order of elements returned by next should be: [1,4,6].

思路:Stack怎么写啊,可以不用stack吗?就是一个基本的NestedInteger遍历方法吧,知道有这回事就行 

整数也需要.getInteger()一下

技术分享图片
public class NestedIterator implements Iterator<Integer> {
    LinkedList<Integer> flattenedList;
    Iterator<Integer> iterator;
    
    public NestedIterator(List<NestedInteger> nestedList) {
        flattenedList = new LinkedList<Integer>();
        flatten(nestedList);
        iterator = flattenedList.iterator();
    }
    
    public void flatten(List<NestedInteger> nestedList) {
        for (NestedInteger i : nestedList) {
            if (i.isInteger()) {
                flattenedList.add(i.getInteger());
            }else {
                flatten(i.getList());
            }
        }
    }

    @Override
    public Integer next() {
        //是返回itrator的next()
        return iterator.next();
    }

    @Override
    public boolean hasNext() {
        return iterator.hasNext();
    }
}
View Code

 




341. Flatten Nested List Iterator展开多层数组

原文:https://www.cnblogs.com/immiao0319/p/13655790.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!