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之路的主要内容,如果未能解决你的问题,请参考以下文章