1656. Design an Ordered Stream #
题目 #
- 有
n
个(id, value)
对,其中id
是1
到n
之间的一个整数,value
是一个字符串。不存在id
相同的两个(id, value)
对。 - 设计一个流,以 任意 顺序获取
n
个(id, value)
对,并在多次调用时 按id
递增的顺序 返回一些值。 - 实现
OrderedStream
类:OrderedStream(int n)
构造一个能接收n
个值的流,并将当前指针ptr
设为1
。String[] insert(int id, String value)
向流中存储新的(id, value)
对。存储后:- 如果流存储有
id = ptr
的(id, value)
对,则找出从id = ptr
开始的 最长 id 连续递增序列 ,并 按顺序 返回与这些 id 关联的值的列表。然后,将ptr
更新为最后那个id + 1
。 - 否则,返回一个空列表。
- 如果流存储有
思路 #
模拟 #
代码 #
模拟 #
class OrderedStream {
private Map<Integer, String> map;
private int ptr;
public OrderedStream(int n) {
this.map = new HashMap<>();
this.ptr = 1;
}
public List<String> insert(int idKey, String value) {
List<String> stream = new LinkedList<>();
this.map.put(idKey, value);
if (this.ptr == idKey) {
while (this.map.containsKey(this.ptr)) {
stream.add(this.map.get(this.ptr++));
}
}
return stream;
}
}