341. Flatten Nested List Iterator
2016-07-14 22:20
381 查看
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
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be:
Example 2:
Given the list
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be:
嵌套的容器,设计一个迭代器,以便顺序访问里面的元素。
一个个判断逻辑有些混乱,直接递归全部取出来,塞入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());
}
}
}
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());
}
}
}
相关文章推荐
- Tried树 (字典查找树)的创建
- Unity3D 2D入门——第2天:C#,我跟C++有点眼缘
- Spring杂记
- POCO库——Foundation组件之日期时间DateTime
- spring整合hibernate
- UVA 107 The Cat in the Hat
- Windows查看CPU的内核个数
- HDU 4258 Covered Walkway 斜率优化DP
- 三国的演义
- 畅通工程(并查集)
- Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for architecture 'armv7'
- C语言实现 迪杰斯特拉算法
- xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?
- 劣质的草 (连通分量)
- C语言培训_009
- Oracle常用的一些命令
- Swift基本语法(3)-控制流
- Jade学习篇
- junit命令行和testNg命令行
- 44. Wildcard Matching