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:
Given the list [[1,1],2,[1,1]],
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,1,2,1,1].
Example 2:
Given the list [1,[4,[6]]],
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,4,6].
嵌套的容器,设计一个迭代器,以便顺序访问里面的元素。
一个个判断逻辑有些混乱,直接递归全部取出来,塞入ArrayList,返回ArrayList的迭代器就好了。
public class NestedIterator implements Iterator<Integer>
{
ArrayList<Integer> arraylist;
Iterator<Integer> it;
public NestedIterator(List<NestedInteger> nestedList)
{
arraylist=new ArrayList<>();
getval(nestedList);
it=arraylist.iterator();
}
@Override
public Integer next()
{
return it.next();
}
@Override
public boolean hasNext()
{
return it.hasNext();
}
public void getval(List<NestedInteger> nestedList)
{
for(NestedInteger nestinteger : nestedList)
if(nestinteger.isInteger())
arraylist.add(nestinteger.getInteger());
else {
getval(nestinteger.getList());
}
}
}
本文介绍了一种处理嵌套列表的方法,通过递归遍历将所有整数元素收集到ArrayList中,并提供了一个简单的迭代器来按顺序访问这些元素。
216

被折叠的 条评论
为什么被折叠?



