您的位置:首页 > 其它

lintcode(528)摊平嵌套的列表

2017-04-12 10:39 302 查看
描述:

给你一个嵌套的列表,实现一个迭代器将其摊平。
一个列表的每个元素可能是整数或者一个列表。

样例:

给出列表 
[[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());
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: