[LeetCode] Flatten Nested List Iterator
来源:互联网 发布:淘宝泳衣买家秀 编辑:程序博客网 时间:2024/06/05 07:26
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 [[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]
.
代码如下:
import java.util.Iterator;import java.util.List;import java.util.ListIterator;import java.util.Stack; 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(); }public class NestedIterator implements Iterator<Integer> {List<NestedInteger> list;Stack<ListIterator<NestedInteger>> stack=new Stack<ListIterator<NestedInteger>>(); public NestedIterator(List<NestedInteger> nestedList) { list=nestedList; stack.push(list.listIterator()); } @Override public Integer next() { if(!hasNext()) return null; return stack.peek().next().getInteger(); } @Override public boolean hasNext() { if(stack.isEmpty()) return false; while(!stack.isEmpty()){ if(!stack.peek().hasNext()){ stack.pop(); continue; } NestedInteger integer=stack.peek().next(); if(integer.isInteger()){ stack.peek().previous(); return true; }else{ stack.push(integer.getList().listIterator()); } } return false; }}/** * Your NestedIterator object will be instantiated and called as such: * NestedIterator i = new NestedIterator(nestedList); * while (i.hasNext()) v[f()] = i.next(); */
阅读全文
1 0
- LeetCode|Flatten Nested List Iterator
- [LeetCode] Flatten Nested List Iterator
- LeetCode:Flatten Nested List Iterator
- [LeetCode] Flatten Nested List Iterator
- Flatten Nested List Iterator leetcode 341
- leetcode 341. Flatten Nested List Iterator
- [leetcode] 341. Flatten Nested List Iterator
- LeetCode 341. Flatten Nested List Iterator
- LeetCode No341. Flatten Nested List Iterator
- LeetCode 341. Flatten Nested List Iterator
- [leetcode-341]Flatten Nested List Iterator(java)
- [leetcode] 341. Flatten Nested List Iterator
- LeetCode: 341. Flatten Nested List Iterator
- Leetcode 341. Flatten Nested List Iterator
- 【LeetCode】 341. Flatten Nested List Iterator
- leetcode 341. Flatten Nested List Iterator
- LeetCode 341. Flatten Nested List Iterator
- [leetcode]341. Flatten Nested List Iterator
- jdbcType与javaType的对应关系
- unity学习日记:Ray(射线)相关知识
- Android studio中为项目添加模块依赖的过程
- 【android】开发干货-图片合成之生成《飞行员驾驶证》
- C++之vector的用法
- [LeetCode] Flatten Nested List Iterator
- 模拟器快捷键
- hello world, java.
- NAT技术与代理服务器调研
- leetcode 217. Contains Duplicate
- CentOS 6 MySQL-5.17 以tar.gz方式安装
- (23)对象调用非静态方法执行过程、静态方法调用内存执行过程
- Zookeeper(五)JAVA API
- linux之sed用法