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

本文介绍了如何利用哈希表和二分查找技术高效处理LeetCode问题中的时间基键值存储操作,通过定制类解决顺序不确定性,实现实时get请求中找到小于等于给定时间戳的最新值。

题目来源: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。若无则为空串。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三更鬼

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值