解决方案


方法一:HashMap + 二分检索

思路与算法

对于每一个键值 key 的两种操作,我们只关注键值的时间戳与值信息。我们可以将这些信息存储在一个 HashMap 中。

对于每一个键值 key,我们可以在已经按照时间戳排序好的序列中进行二分检索,从而找到对应 key 相关的 value

复杂度分析

  • 时间复杂度:对于 set 操作, 。对于 get 操作,。 其中,TimeMap 中元素的数量。

  • 空间复杂度:


方法二:TreeMap

思路与算法

对于 Java 语言,我们可以使用 TreeMap.floorKey(timestamp) 来找到小于等于给定时间戳 timestamp 的最大时间戳。

我们使用与 方法一 相同的方法构建解法,仅仅替换这部分的功能。

复杂度分析

  • 时间复杂度:对于 set 操作,。对于 get 操作,。其中,TimeMap 中元素的数量。

  • 空间复杂度: