在O(1)空间中的List <list <integer >>上实现迭代器

时间:2019-02-07 11:08:15

标签: java algorithm data-structures

假设您要在恒定空间环境中的Iterator上实现List<List<Integer>>,您将如何进行?

另一个要求是不允许使用堆栈或队列。

您必须定义hasNext()next()函数。

1 个答案:

答案 0 :(得分:1)

要遍历List,您只需指向当前元素的单个变量

方法hasNext是对List的大小和指针之间的简单测试。

下一个method是使用位置指针处的元素的简单提取。

指针是int ,因此空格为 O(1)。您最终还可以保存一个List大小的变量,但是在这种情况下,该空间为O(1)。


可以在List的{​​{1}}中完成相同操作,只需保存两个指针(最终两个大小),并且可以扩展为嵌套数量的任何固定列表。它不能用于数量可变的嵌套列表,因为它们可能为n,因此在这种情况下,解决方案需要O(n)的空间。