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;
}
}