Skip to content

Latest commit

 

History

History
15 lines (8 loc) · 824 Bytes

File metadata and controls

15 lines (8 loc) · 824 Bytes

题目

给出一个嵌套的整数列表,实现一个扁平化遍历该链表的迭代器

例如:

给定列表 [[1,1],2,[1,1]],

通过重复调用 next 直到 hasNext 返回false,next 返回的元素的顺序应该是: [1,1,2,1,1]

解答

上图给出了一个扁平化处理过程,从处理过程上看,当遇到一个嵌套list时,会进入嵌套的list处理该list,当嵌套list处理完成后,会返回外层list继续处理。这个过程是一个递归的处理过程,因此可以使用两个栈,一个栈begin保存每层list的当前迭代器,另一个栈end保存每层list的尾后迭代器,用于判断何时一层list处理结束。begin.top()和end.top()是同一层list的当前迭代器和尾后迭代器