Flatten Nested List Iterator
题目地址:
https://leetcode.com/problems/flatten-nested-list-iterator/#/description
题目:
解题思路:
这道题主要就是利用NestedInteger里面的api,isInteger,getInteger和getList来将输入转化为list<Integer> flatten。这样所有信息都存在flatten里面了。然后每当call hasNext的时候就看iter还有没有下一个。
代码:
https://leetcode.com/problems/flatten-nested-list-iterator/#/description
题目:
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
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
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].解题思路:
这道题主要就是利用NestedInteger里面的api,isInteger,getInteger和getList来将输入转化为list<Integer> flatten。这样所有信息都存在flatten里面了。然后每当call hasNext的时候就看iter还有没有下一个。
代码:
public class NestedIterator implements Iterator<Integer> { private List<Integer> flatten; private Iterator<Integer> iterator; public NestedIterator(List<NestedInteger> nestedList) { flatten = new ArrayList<>(); flat(nestedList); iterator = flatten.iterator(); } public void flat(List<NestedInteger> nestedList){ for(int i = 0; i <= nestedList.size() - 1; i++){ NestedInteger curr = nestedList.get(i); if(curr.isInteger()){ flatten.add(curr.getInteger()); } else{ flat(curr.getList()); } } } @Override public Integer next() { return iterator.next(); } @Override public boolean hasNext() { return iterator.hasNext(); } }

Comments
Post a Comment