创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作:

  1. set(string key, string value, int timestamp)

存储键 key、值 value,以及给定的时间戳 timestamp。
2. get(string key, int timestamp)

返回先前调用 set(key, value, timestamp_prev) 所存储的值,其中 timestamp_prev <= timestamp。
如果有多个这样的值,则返回对应最大的 timestamp_prev 的那个值。
如果没有值,则返回空字符串("")。

示例 1:

输入:inputs = [“TimeMap”,“set”,“get”,“get”,“set”,“get”,“get”], inputs = [[],[“foo”,“bar”,1],[“foo”,1],[“foo”,3],[“foo”,“bar2”,4],[“foo”,4],[“foo”,5]]
输出:[null,null,“bar”,“bar”,null,“bar2”,“bar2”]
解释:
TimeMap kv;
kv.set(“foo”, “bar”, 1); // 存储键 “foo” 和值 “bar” 以及时间戳 timestamp = 1
kv.get(“foo”, 1); // 输出 “bar”
kv.get(“foo”, 3); // 输出 “bar” 因为在时间戳 3 和时间戳 2 处没有对应 “foo” 的值,所以唯一的值位于时间戳 1 处(即 “bar”)
kv.set(“foo”, “bar2”, 4);
kv.get(“foo”, 4); // 输出 “bar2”
kv.get(“foo”, 5); // 输出 “bar2”

代码

    class TimeMap {Map<String,TreeMap<Integer,String>> map;/** Initialize your data structure here. */public TimeMap() {map=new HashMap<>();}public void set(String key, String value, int timestamp) {if(!map.containsKey(key))map.put(key,new TreeMap<>());map.get(key).put(timestamp,value);//存储key ->(timestamp->value)}public String get(String key, int timestamp) {if( map.get(key).floorEntry(timestamp)==null) return "";//没有小于或等于目标的keyreturn  map.get(key).floorEntry(timestamp).getValue();}}/*** Your TimeMap object will be instantiated and called as such:* TimeMap obj = new TimeMap();* obj.set(key,value,timestamp);* String param_2 = obj.get(key,timestamp);*/

leetcode981. 基于时间的键值存储(treemap)相关推荐

  1. 981. 基于时间的键值存储

    创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作: set(string key, string value, int timestamp) 存储键 key.值 value,以及给定的 ...

  2. LeetCode 981. 基于时间的键值存储(哈希+二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作: set(string key, string value, int timestamp ...

  3. LeetCode 981. 基于时间的键值存储 / 274. H 指数 / 275. H 指数 II

    981. 基于时间的键值存储 2021.7.10 每日一题 题目描述 创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作:1. set(string key, string value, ...

  4. 365天挑战LeetCode1000题——Day 038 公交站间的距离 + 基于时间的键值存储 + 转变数组后最接近目标值的数组和 + 有界数组中指定下标处的最大值

    文章目录 1184. 公交站间的距离 代码实现(自解) 981. 基于时间的键值存储 代码实现(自解) 1300. 转变数组后最接近目标值的数组和 代码实现(自解) 1802. 有界数组中指定下标处的 ...

  5. 文巾解题 981. 基于时间的键值存储

    1 题目描述 . 2 解题思路 创建两个字典,它们有相同的键,键值分别是value和timestamp 然后get的时候,我先用二分查找最大的timestamp_prev的下标,然后用这个下标定位到相 ...

  6. 基于LSM-Tree的键值存储引擎的设计与实现

    资源下载地址:https://download.csdn.net/download/sheziqiong/85709667 资源下载地址:https://download.csdn.net/downl ...

  7. 五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据

    五大存储模型关系模型.键值存储.文档存储.列式存储.图形数据 时间:2014-06-12 16:15来源:知行网www.zhixing123.cn 编辑:麦田守望者 昨天跟一同事讨论Sybase是不是 ...

  8. Dynamo:亚马逊的高可用键值存储

    目录 1. 简介 2. 背景 3. 相关工作 4. 系统结构 5. 实现 6. 经验和教训 7. 结论 Dynamo:亚马逊的高可用键值存储 摘要:大规模的可靠性是我们在 Amazon.com 面临的 ...

  9. plsql 存储过程 批量提交_新一代的键值存储 KVell SOSP 2019

    『看看论文』是一系列分析计算机和软件工程领域论文的文章,我们在这个系列的每一篇文章中都会阅读一篇来自 OSDI.SOSP 等顶会中的论文,这里不会事无巨细地介绍所有的细节,而是会筛选论文中的关键内容, ...

最新文章

  1. grunt-connect-proxy解决开发时跨域问题
  2. 横竖屏切换时候Activity的生命周期
  3. LIst和map的遍历
  4. 数据库 sqlite order by对结果集进行排序
  5. 水晶报表钻取(深化)之分组法
  6. Android 动画(四)---逐帧动画
  7. 非阻塞模式(ioctlsocket)
  8. springmvc工作流程_SpringMVC工作原理
  9. Zookeeper Watcher(事件监听器)?
  10. 你碰到过的最难调的 Bug 是什么?
  11. 解决Mysql安装之后没有my.ini配置文件问题
  12. c语言 防止sql注入,c#如何防止sql注入?
  13. 网秦上市前夕被央视曝光恶意吸费 网秦飞流否认
  14. 局部敏感哈希(Locality-Sensitive Hashing, LSH)
  15. 【linux】利用ssh、sshpass和rsync命令,实现免密同步文件,指定非22端口
  16. 2021-05-03
  17. 当我们谈论基因,我们在谈论什么
  18. postgis基本用法
  19. 类别(Category)的作用(三)---添加非正式协议
  20. 计算机网络学习记录1

热门文章

  1. Linux之GDB命令(二)
  2. linux syslog服务器配置,自动发日志到另一台日志服务器
  3. 【绝对干货】kafkastream广告
  4. 大牛手把手教你!2021Java最新大厂面试真题
  5. HDOJ 2037:今年暑假不AC_大二写
  6. Java基础--访问权限控制符
  7. 一个数据仓库转型者眼中的数据挖掘
  8. ImageLoader加载图片
  9. 判断两个树是否互相镜像
  10. jquery 实现智能炫酷的翻页相册效果