lintcode(528)摊平嵌套的列表
2017-04-12 10:39
302 查看
描述:
给你一个嵌套的列表,实现一个迭代器将其摊平。
一个列表的每个元素可能是整数或者一个列表。
样例:
给出列表
给出列表
思路:
创建ArrayList来存储,首先将平面链表,然后存储在arraylist中,使用迭代器实现next()以及hasnext()
/**
* // This is the interface that allows for creating nested lists.
* // You should not implement it, or speculate about its implementation
* public interface NestedInteger {
*
* // @return true if this NestedInteger holds a single integer,
* // rather than a nested list.
* public boolean isInteger();
*
* // @return the single integer that this NestedInteger holds,
* // if it holds a single integer
* // Return null if this NestedInteger holds a nested list
* public Integer getInteger();
*
* // @return the nested list that this NestedInteger holds,
* // if it holds a nested list
* // Return null if this NestedInteger holds a single integer
* public List<NestedInteger> getList();
* }
*/
import java.util.Iterator;
public class NestedIterator implements Iterator<Integer>{
ArrayList<Integer> result = new ArrayList<Integer>();
public NestedIterator(List<NestedInteger> nestedList) {
// Initialize your data structure here.
search(nestedList , result);
}
public void search(List<NestedInteger> nestedList , ArrayList<Integer> result){
for(NestedInteger list : nestedList){
if(list.isInteger()){
result.add(list.getInteger());
}else{
search(list.getList() , result);
}
}
}
// @return {int} the next element in the iteration
@Override
public Integer next() {
// Write your code here
Iterator it = result.iterator();
int m = (int)it.next();
result.remove(0);
return m;
}
// @return {boolean} true if the iteration has more element or false
@Override
public boolean hasNext() {
// Write your code here
Iterator it = result.iterator();
return it.hasNext();
}
@Override
public void remove() {}
}
/**
* Your NestedIterator object will be instantiated and called as such:
* NestedIterator i = new NestedIterator(nestedList);
* while (i.hasNext()) v.add(i.next());
*/
给你一个嵌套的列表,实现一个迭代器将其摊平。
一个列表的每个元素可能是整数或者一个列表。
样例:
给出列表
[[1,1],2,[1,1]],经过迭代器之后返回
[1,1,2,1,1]。
给出列表
[1,[4,[6]]],经过迭代器之后返回
[1,4,6]。
思路:
创建ArrayList来存储,首先将平面链表,然后存储在arraylist中,使用迭代器实现next()以及hasnext()
/**
* // This is the interface that allows for creating nested lists.
* // You should not implement it, or speculate about its implementation
* public interface NestedInteger {
*
* // @return true if this NestedInteger holds a single integer,
* // rather than a nested list.
* public boolean isInteger();
*
* // @return the single integer that this NestedInteger holds,
* // if it holds a single integer
* // Return null if this NestedInteger holds a nested list
* public Integer getInteger();
*
* // @return the nested list that this NestedInteger holds,
* // if it holds a nested list
* // Return null if this NestedInteger holds a single integer
* public List<NestedInteger> getList();
* }
*/
import java.util.Iterator;
public class NestedIterator implements Iterator<Integer>{
ArrayList<Integer> result = new ArrayList<Integer>();
public NestedIterator(List<NestedInteger> nestedList) {
// Initialize your data structure here.
search(nestedList , result);
}
public void search(List<NestedInteger> nestedList , ArrayList<Integer> result){
for(NestedInteger list : nestedList){
if(list.isInteger()){
result.add(list.getInteger());
}else{
search(list.getList() , result);
}
}
}
// @return {int} the next element in the iteration
@Override
public Integer next() {
// Write your code here
Iterator it = result.iterator();
int m = (int)it.next();
result.remove(0);
return m;
}
// @return {boolean} true if the iteration has more element or false
@Override
public boolean hasNext() {
// Write your code here
Iterator it = result.iterator();
return it.hasNext();
}
@Override
public void remove() {}
}
/**
* Your NestedIterator object will be instantiated and called as such:
* NestedIterator i = new NestedIterator(nestedList);
* while (i.hasNext()) v.add(i.next());
*/
相关文章推荐
- *[Lintcode]Flatten Nested List Iterator 摊平嵌套的列表
- lintcode--摊平嵌套的列表
- LintCode: 摊平嵌套的列表
- Google/LintCode:M-摊平嵌套的列表
- 摊平嵌套列表-lintcode
- dede 嵌套获取顶级栏目及子栏目列表
- JAVA代码实现嵌套层级列表,POI导出嵌套层级列表
- PullToRefreshScrollView 嵌套RecyclerView实现特卖列表倒计时抢购
- HTML基础2——综合案例2——复杂的嵌套列表
- Python实现对嵌套列表字典按某一元素合并及lambda的使用
- 关于php列表显示目录和嵌套html语句
- android优雅的解决列表嵌套 类似订单列表这种
- 邻接列表模式转化为嵌套集合模式
- html基础 ul li 无序列表的嵌套
- lintcode-22-平面列表
- Python3.2官方文档教程--嵌套列表推导式和del关键字
- Python——嵌套列表,根据第k维进行排序
- 递归处理多层嵌套列表
- 递归处理多层嵌套列表
- <PY>转换类型:嵌套列表的遍历