如题 阿里云面试给的题目 各位带佬看看咋做
/** Iterator 表示了一个元素序列。 这个元素序列在什么位置,以及如何存储都是未知的。
* 这个元素序列可能非常非常长,有几十亿个元素,或者可能是无穷无尽的。*/
public interface Iterator<T extends Comparable<T>> {
/** 返回当前游标位置的元素
* @return 当前游标位置的元素
* */
public T getCurrentElement();
/** 游标移动到下一个元素。
* 注意:Iterator在初始时游标位于第一个元素之前!!!!
* @return 如果有下一个元素的话,返回true, 否则返回false
*/
public boolean moveNext();
}
/**
* 输入一个iterators数组,这个数组中的每个iterator返回的元素都是有序的(升序)。
* 这个类要实现一个iterator,它把iterators数组代表的iterator看作一个整体,返回整体有序的结果。
* 举个例子:
* iterators数组包含两个iterator。
* iterator 1返回:1 3 4 6 7 8
* iterator 2返回:2 5 9 10
* 那么这个类返回的元素序列为: 1 2 3 4 5 6 7 8 9 10
*
* 实现限制:
* 1. 你能使用的内存必须和元素的个数无关。即即使元素的个数是无穷多个,你的程序也应该只需要很小的内存就可以运行。
* 2. 不能对这个类的使用者作假定。比方说不能假定moveNext()和getCurrentElement()一定是成对调用的。
* */
public class TotalOrderIterator<T extends Comparable<T>> implements Iterator<T> {
public TotalOrderIterator(vector<Iterator<T>>& iters, size_t len) {
}
public T getCurrentElement() {
return getCurrentElement();
}
public boolean moveNext() {
return moveNext();
}
}
全部评论
(0) 回帖