编程题--扁平化嵌套列表迭代器
来源leetcode:https://leetcode-cn.com/problems/flatten-nested-list-iterator/
问题陈述
给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。
示例 1: 输入: [[1,1],2,[1,1]] 输出: [1,1,2,1,1] 解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。
示例 2: 输入: [1,[4,[6]]] 输出: [1,4,6] 解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,4,6]。
参考思路:
首先,迭代器是惰性的。惰性是指如果需要获取当前的值,那就去获取当前值,不会把所有的值都去迭代。所以使用递归的方式获取到全部的值不是一个好方法。
好的思路就是:在利用hasNext
函数判断是否有下一个整数时将第一个元素展开直到它为整数。(如果第一个元素就是整数就不用展开)。然后调用next
函数获取第一个整数,然后将该第一个整数从迭代器的列表中删除(为了每次都从第一个位置获取要返回的值)。
参考:https://leetcode-cn.com/problems/flatten-nested-list-iterator/solution/shu-de-bian-li-kuang-jia-ti-mu-bu-rang-wo-zuo-shi-/
python实现:
1 | class NestedIterator: |