341. 扁平化嵌套列表迭代器(一般)
给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。
示例 1:
1 2 3
| 输入: [[1,1],2,[1,1]] 输出: [1,1,2,1,1] 解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。
|
示例 2:
1 2 3
| 输入: [1,[4,[6]]] 输出: [1,4,6] 解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,4,6]。
|
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flatten-nested-list-iterator
思路:
多叉树遍历框架
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public class NestedIterator implements Iterator<Integer> {
Iterator<Integer> it; public NestedIterator(List<NestedInteger> nestedList) { List<Integer> res = new ArrayList<>(); for(NestedInteger nestedInteger : nestedList){ traverse(nestedInteger,res); } this.it = res.iterator(); }
@Override public Integer next() { return it.next(); }
@Override public boolean hasNext() { return it.hasNext(); } void traverse(NestedInteger root, List<Integer> result) { if (root.isInteger()) { result.add(root.getInteger()); return; } for (NestedInteger child : root.getList()) { traverse(child, result); } } }
|