Implement an iterator to flatten a 2d vector.
For example,
Given 2d vector =
[
[1,2],
[3],
[4,5,6]
]
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,2,3,4,5,6].
Follow up:
As an added challenge, try to code it using only iterators in C++ or iterators in Java.
解法1: Non-Iterator, List + Pointer
用一个list来存储原来的数据。同时维护两个指针,一个指向当前的子list,另一个指向该list中的位置。在hasNext函数中,判断是否还有数据查看elemenPointer是不是在list尾巴,同时检查是否还有下一个list。
|
|
解法2: Iterator
用一个queue来存储每一个list对应的iterator。同时维护一个iterator指向当前的iterator。hasNext就需要判断当前是否还有iterator同时这个iterator是否有下一个元素。
|
|