【LeetCode】基于时间的键值存储 Java 题解
题目描述
创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作:
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 的那个值。如果没有值,则返回空字符串("")。
复制代码
思路分析
今天的每日一题是设计类题目,题干比较长,需要认真思考。分析之后,set 操作就是存储 kv 关系, get 就是获取 timestamp 最近的值。
采用 hashmap 结构可以很好的存储上述的关系。
代码
复制代码
总结
上述代码的 set 操作的时间复杂度是 O(1), 空间复杂度是 O(n). get 操作的时间复杂度是 O(n), 空间复杂度是 O(n)。
坚持每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/f26a8d7a6ba98f994a72b3fb4】。文章转载请联系作者。
评论