暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

981. Time Based Key-Value Store

程序媛的梦想 2020-03-12
186

构建一个带有时间版本的KV存储器。即每次保存的时候会保存当前的时间,查询的时候给出一个时间,要求找到先于该时间的最新的key对应的value。

思路:利用TreeMap可以自动排序的特点,减少自己排序的麻烦。

用TreeMap.floorKey()可以迅速返回小于当前时间的最大时间。


时间复杂度:插入O(1),查找O(logN);

空间复杂度:O(N)。

 1import java.util.HashMap;
2import java.util.TreeMap;
3
4/**
5 * @author lxn
6 * @description 981. Time Based Key-Value Store
7 * @create 2020-03-12 23:22
8 */

9public class Algorithm981 {
10    public static void main(String[] args) {
11        TimeMap obj = new TimeMap();
12        obj.set("foo","bar",1);
13        String param_2 = obj.get("foo"1);
14
15    }
16}
17
18class TimeMap {
19
20    /** Initialize your data structure here. */
21    HashMap<String, TreeMap<Integer, String>> map;
22    public TimeMap() {
23        map = new HashMap();
24    }
25
26    public void set(String key, String value, int timestamp) {
27        map.computeIfAbsent(key, k -> new TreeMap()).put(timestamp, value);// {"foo", {"1", "bar"}}
28    }
29
30    public String get(String key, int timestamp) {
31        if(!map.containsKey(key)) return "";
32        TreeMap<Integer, String> tree = map.get(key); // {"1", "bar"}
33        // TreeMap.floorKey: 返回小于等于给定键的最大键;如果不存在这样的键,则返回null。
34        Integer time = tree.floorKey(timestamp);
35        return time != null ? tree.get(time) : "";
36    }
37}

文章转载自程序媛的梦想,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论