LeetCode Top Interview Questions 341. Flatten Nested List Iterator (Java版; Medium)
题目描述
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:
Input: [[1,1],2,[1,1]]
Output: [1,1,2,1,1]
Explanation: By calling next repeatedly until hasNext returns false,
the order of elements returned by next should be: [1,1,2,1,1].
Example 2:
Input: [1,[4,[6]]]
Output: [1,4,6]
Explanation: By calling next repeatedly until hasNext returns false,
the order of elements returned by next should be: [1,4,6].
publicclassNestedIteratorimplementsIterator<Integer>{private Stack<NestedInteger> stack;publicNestedIterator(List<NestedInteger> nestedList){
stack =newStack<>();flatten(nestedList);}@Overridepublic Integer next(){//这里不用先判断是否有下一个, 因为调用next()之前会先调用hasNext()return stack.pop().getInteger();}@OverridepublicbooleanhasNext(){while(!stack.isEmpty()){if(stack.peek().isInteger())returntrue;flatten(stack.pop().getList());}//执行到这里说明栈为空, 并且没有Integer, 所以返回false, 可以处理特殊案例, 输入是[[]]returnfalse;}//只负责把列表中的元素压栈, 不考虑展开privatevoidflatten(List<NestedInteger> nestedList){for(int i=nestedList.size()-1; i>=0; i--){
stack.push(nestedList.get(i));}}}/**
* Your NestedIterator object will be instantiated and called as such:
* NestedIterator i = new NestedIterator(nestedList);
* while (i.hasNext()) v[f()] = i.next();
*/
LeetCode Top Interview Questions 341. Flatten Nested List Iterator (Java版; Medium)
welcome to my blogLeetCode Top Interview Questions 341. Flatten Nested List Iterator (Java版; Medium)题目描述Given a nested list of integers, implement an iterator to flatten it.Each element is eithe...