力扣 981. 基于时间的键值存储

题目来源:https://leetcode-cn.com/problems/time-based-key-value-store/

大致题意:
给定一个由set和get组成的操作序列,再给定对应的操作内容数组,然后对于每次的set将给定的(key,value,timestamp)存储起来,对于每次的get将对应(key,timestamp)的value返回。需要注意,get的时候,返回的是不超过给定timestamp的value,若无则返回空串。

思路

哈希表+二分查找
使用哈希表存set的数据,键为key,值为<timestamp,value>类型。
题目中的set类型会按着timestamp增序,但是Java中使用HashMap存的话Map中的键值对顺序和插入时的不一样(因为是按照HashCode索引),而使用TreeMap或者将键的集合取出再排序将会超时。所以只能新建一个类存储。
get时对于给定key,取出对应的<timestamp,value>键值对。然后获取键的集合,在集合中找到最大的不超过给定timestamp的元素,然后在<timestamp,value>键值对找到对应的value。若无则为空串。

上一篇:kafaka获取指定时间内的消息并写入指定文件


下一篇:981. 基于时间的键值存储 力扣(中等) 又学到了map新用法,lower_bound()