981. 基于时间的键值存储
设计一个基于时间的键值数据结构,该结构可以在不同时间戳存储对应同一个键的多个值,并针对特定时间戳检索键对应的值。
实现 TimeMap 类:
TimeMap() 初始化数据结构对象
void set(String key, String value, int timestamp) 存储键 key、值 value,以及给定的时间戳 timestamp。
String get(String key, int timestamp)
返回先前调用 set(key, value, timestamp_prev) 所存储的值,其中 timestamp_prev <= timestamp 。
如果有多个这样的值,则返回对应最大的 timestamp_prev 的那个值。
如果没有值,则返回空字符串("")。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/time-based-key-value-store
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class TimeMap {
/** Initialize your data structure here. */
HashMap> map;
public TimeMap() {
map = new HashMap();
}
public void set(String key, String value, int timestamp) {
map.computeIfAbsent(key, k-> new TreeMap()).put(timestamp, value);
}
public String get(String key, int timestamp) {
if(!map.containsKey(key)) {
return "";
}
Integer time = map.get(key).floorKey(timestamp);
if(time == null) {
return "";
}
return map.get(key).get(time);
}
}