题目来源: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。若无则为空串。
本文介绍了如何利用哈希表和二分查找技术高效处理LeetCode问题中的时间基键值存储操作,通过定制类解决顺序不确定性,实现实时get请求中找到小于等于给定时间戳的最新值。
522

被折叠的 条评论
为什么被折叠?



