Problem
You are given a nested list of integers nestedList
. Each element is either an integer or a list whose elements may also be integers or other lists. Implement an iterator to flatten it.
Implement the NestedIterator
class:
NestedIterator(List<NestedInteger> nestedList)
Initializes the iterator with the nested listnestedList
.int next()
Returns the next integer in the nested list.boolean hasNext()
Returnstrue
if there are still some integers in the nested list andfalse
otherwise.
Example 1:
1 | Input: nestedList = [[1,1],2,[1,1]] |
Example 2:
1 | Input: nestedList = [1,[4,[6]]] |
Constraints:
1 <= nestedList.length <= 500
- The values of the integers in the nested list is in the range
[-106, 106]
.
Analysis
题目给出了一个嵌套链表,要求我们实现一个迭代器去遍历这个嵌套链表。链表中的元素可以是数字,也可以是链表,每个元素的类型提供接口判断。
一开始的想法是维护一个下标,指向当前已经遍历到那个位置了,这个思路对普通链表来说是没问题的,但是对于嵌套链表,无法快速定位到当前指向的位置。既然在使用过程中我们无法做到,干脆初始化的时候把嵌套链表打平就好,然后按照数组一个一个往后读。
所以这道题目就转变为打平一个嵌套链表,其实就是DFS了。把元素都提取出来放到一个数组中,然后维护一个下标表示当前访问到哪个位置即可。
Solution
无
Code
1 | /** |
Summary
这道题目难度不大,是数组中一个简单的DFS。这道题目的分享到这里,感谢你的支持!