LeetCode 981 基于时间的键值存储[Map] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 981 基于时间的键值存储[Map] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

在这里插入图片描述在这里插入图片描述解题思路:
本题的关键在于如何存储,一个是key对应一个value,一个是value对应一个时间,那么很明显可以使用双重Map,外面的map是key对应一个map,里面的map是时间对应value,在get函数中,先key有没有对应value,没有返回空,有的话调用upper_bound限制key的范围,如果没有返回空,有返回前一个指针,代码如下:

class TimeMap {
private:
    map<string, map<int, string>> mp;
public:
    /** Initialize your data structure here. */
    TimeMap() {

    }
    
    void set(string key, string value, int timestamp) {
        mp[key][timestamp] = value;
    }
    
    string get(string key, int timestamp) {
        // 如果没有为空
        if(mp.count(key) == 0) {
            return "";
        }
        const auto& it = mp[key].upper_bound(timestamp);
        if(it != mp[key].begin()) {
            // 返回前一个指针
            return prev(it) -> second;
        }
        return "";
    }
};

/**
 * 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);
 */

以上是关于LeetCode 981 基于时间的键值存储[Map] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

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

红黑树981. 基于时间的键值存储(中等)

[MSTL] lc981. 基于时间的键值存储(设计+哈希表+map二分查找+代码技巧)

为高级查询选择基于 Java 的键值存储

可扩展对象的键值存储

时间序列数据的键值存储?