LeetCode 981. 基于时间的键值存储(哈希+二分查找)
文章目錄
- 1. 題目
- 2. 解題
1. 題目
創(chuàng)建一個(gè)基于時(shí)間的鍵值存儲類 TimeMap,它支持下面兩個(gè)操作:
存儲鍵 key、值 value,以及給定的時(shí)間戳 timestamp。
返回先前調(diào)用 set(key, value, timestamp_prev) 所存儲的值,其中 timestamp_prev <= timestamp。
如果有多個(gè)這樣的值,則返回對應(yīng)最大的 timestamp_prev 的那個(gè)值。
如果沒有值,則返回空字符串("")。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/time-based-key-value-store
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
直接哈希map+有序mapunordered_map<string,map<int,string>>,key, time, value
class TimeMap {unordered_map<string,map<int,string>> m; public:/** Initialize your data structure here. */TimeMap() { }void set(string key, string value, int timestamp) {m[key][timestamp] = value;}string get(string key, int timestamp) {if(m.find(key) == m.end())return "";auto it = m[key].upper_bound(timestamp);//map,key有序,二分查找if(it == m[key].begin())//沒找到return "";return (--it)->second;} };824 ms 133.3 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 981. 基于时间的键值存储(哈希+二分查找)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1636. 按照频率将
- 下一篇: LeetCode 1748. 唯一元素的