原题
给定一个嵌套的整型列表。设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
列表中的项或者为一个整数,或者是另一个列表。
示例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/