文章目录

  • 1. 题目
  • 2. 解题

1. 题目

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

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

存储键 key、值 value,以及给定的时间戳 timestamp。

  1. 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"   示例 2:
输入:inputs = ["TimeMap","set","set","get","get","get","get","get"],
inputs = [[],["love","high",10],["love","low",20],["love",5],["love",10],["love",15],["love",20],["love",25]]
输出:[null,null,null,"","high","high","low","low"]提示:
所有的键/值字符串都是小写的。
所有的键/值字符串长度都在 [1, 100] 范围内。
所有 TimeMap.set 操作中的时间戳 timestamps 都是严格递增的。
1 <= timestamp <= 10^7
TimeMap.set 和 TimeMap.get 函数在每个测试用例中将(组合)调用总计 120000 次。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/time-based-key-value-store
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

直接哈希map+有序mapunordered_map<string,map<int,string>>,key, time, value

class TimeMap {unordered_map<string,map<int,string>> m;
public:/** Initialize your data structure here. */TimeMap() { }void set(string key, string value, int timestamp) {m[key][timestamp] = value;}string get(string key, int timestamp) {if(m.find(key) == m.end())return "";auto it = m[key].upper_bound(timestamp);//map,key有序,二分查找if(it == m[key].begin())//没找到return "";return (--it)->second;}
};

824 ms 133.3 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

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

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

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

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

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

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

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

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

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

  5. leetcode981. 基于时间的键值存储(treemap)

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

  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. 全球及中国制糖行业销售规模与运营态势研究报告2022版
  2. 科普 | 你必须了解的漏洞利用缓解及对抗技术
  3. OpenGL之深入解析坐标系
  4. 针对SAP OData 模型Addresssable属性的不同处理
  5. 跳出内层循环 使用 for of 代替 map
  6. mf253s移动版变全网通_中国电信发布5G全网通终端需求白皮书v2.0
  7. js用按钮变图片怎么再点一次换回去_看我如何用漏洞组合拳给小萝莉刷票
  8. php 返回object,深入分析使用mysql_fetch_object()以对象的形式返回查询结果
  9. c语言比赛积分程序,C语言积分赛.doc
  10. 冰河木马使用(纯属学习)
  11. JAVA开发工程师面试题shiro
  12. Js 获取浏览器高度
  13. 22届哈工大深圳计算机854考研经验贴、过程总结贴(初试 353 复试 304 上岸哈工大深圳)
  14. 2020数学建模国赛A题思路与代码(全)
  15. 推荐七大写作利器,总有一款适合你
  16. c语言一个小写字母字节,C语言:给定一个小写字母,转换成大写字母
  17. SAP 不能打印的解决方法
  18. 客户成功案例 | 从半导体到终端产品:恩智浦(NXP),利用数据驱动“移动”未来
  19. 19 M2芯片的MAC安装安卓模拟器
  20. 国科大沈阳计算机所读研排位,考研录取全国前五,保研清北国科大60名,这所211开挂了...

热门文章

  1. python中tkinter的使用-中
  2. aimesh node重启_ASSIMP的数据结构
  3. Linux: shell 中命令代换 $() 和 ``(有图有代码有真相!!!)
  4. 数据结构探险——图篇
  5. Go语言之高级篇beego框架之参数配置与路由配置
  6. 微信扫码下载iosAPP
  7. iOS 5.1.1 设备不能安装AdHoc问题版本号
  8. [内核摘要] 虚拟文件系统
  9. Redis源码分析之小型测试框架testhelp.h和redis-check-aof.c日志检测
  10. java 对象 序列化 文件中_如何将一个java对象序列化到文件里