leetcode_middle_50_341. Flatten Nested List Iterator
来源:互联网 发布:大革命1060设置优化 编辑:程序博客网 时间:2024/06/05 11:07
题意:
一种嵌套数组,里面的元素可能是整数可能是数组,如果是数组,这个数组里面的员孙可能有整数也可能有数组
要求实现其迭代器。
分析:
只要是栈应该都不会太难,能想出来。我们通过例子来分析:
比如:
[[3,4],[5,6]] , 2 , [1,1]三个元素
相当于第一层结点:
第二层: [3,4] , [5, 6] ,2 , 1,1
第三层: 3,4,5,6,2,1,1
虽然我们现在对动态的搜索过程还不是很清晰,但是我们知道是要叶子节点(整数),只要是List就要展开,从左到右(类似于深搜)。因为第一个节点假如是一个list哪怕有很多层,第二个节点是一个整数,我们直到把第一个节点全部展开之前也不能遍历到第二个节点。但是我们如果全部先解开是麻烦且浪费的,所以我们考虑动态的解开
public class NestedIterator implements Iterator<Integer> { Stack<NestedInteger> stack = null; public NestedIterator(List<NestedInteger> nestedList) { stack = new Stack<>(); for(int i=nestedList.size()-1; i>=0; i--){ stack.push(nestedList.get(i)); } } @Override public Integer next() { if(hasNext()) return stack.pop().getInteger(); else return null; } @Override public boolean hasNext() { while(!stack.isEmpty()){ if(stack.peek().isInteger()){ return true; }else{ NestedInteger tmp = stack.pop(); for(int i = tmp.getList().size()-1; i >= 0;i--) { stack.push(tmp.getList().get(i)); } } } return false; }}
0 0
- leetcode_middle_50_341. Flatten Nested List Iterator
- Flatten Nested List Iterator
- Flatten Nested List Iterator
- Flatten Nested List Iterator
- Flatten Nested List Iterator
- Flatten Nested List Iterator
- Flatten Nested List Iterator
- Flatten Nested List Iterator
- Flatten Nested List Iterator
- Flatten Nested List Iterator
- 341. Flatten Nested List Iterator
- 341. Flatten Nested List Iterator
- 341. Flatten Nested List Iterator
- LeetCode|Flatten Nested List Iterator
- [LeetCode] Flatten Nested List Iterator
- LeetCode:Flatten Nested List Iterator
- 341. Flatten Nested List Iterator
- 341. Flatten Nested List Iterator
- MySQL中timestamp数据类型的特点
- Java 遍历Map 、List、Set、数组的方法
- CSS3的calc()使用
- Google浏览器打开总是跳到hao123网站问题
- Android XML中的颜色对照表
- leetcode_middle_50_341. Flatten Nested List Iterator
- 使用JavaMelody监控tomcat以及jvm
- java轻量级的CMS解决方案 天梯(tianti)
- iOS plist的存储和读取
- memcache与redis原理区别
- Java学习-内存解析之栈内存与堆内存
- 单例模式
- Permission总结
- java中重载重写的一些思考