leetcode981. 基于时间的键值存储(treemap)
創(chuàng)建一個(gè)基于時(shí)間的鍵值存儲(chǔ)類(lèi) TimeMap,它支持下面兩個(gè)操作:
存儲(chǔ)鍵 key、值 value,以及給定的時(shí)間戳 timestamp。
2. get(string key, int timestamp)
返回先前調(diào)用 set(key, value, timestamp_prev) 所存儲(chǔ)的值,其中 timestamp_prev <= timestamp。
如果有多個(gè)這樣的值,則返回對(duì)應(yīng)最大的 timestamp_prev 的那個(gè)值。
如果沒(méi)有值,則返回空字符串("")。
示例 1:
輸入:inputs = [“TimeMap”,“set”,“get”,“get”,“set”,“get”,“get”], inputs = [[],[“foo”,“bar”,1],[“foo”,1],[“foo”,3],[“foo”,“bar2”,4],[“foo”,4],[“foo”,5]]
輸出:[null,null,“bar”,“bar”,null,“bar2”,“bar2”]
解釋:
TimeMap kv;
kv.set(“foo”, “bar”, 1); // 存儲(chǔ)鍵 “foo” 和值 “bar” 以及時(shí)間戳 timestamp = 1
kv.get(“foo”, 1); // 輸出 “bar”
kv.get(“foo”, 3); // 輸出 “bar” 因?yàn)樵跁r(shí)間戳 3 和時(shí)間戳 2 處沒(méi)有對(duì)應(yīng) “foo” 的值,所以唯一的值位于時(shí)間戳 1 處(即 “bar”)
kv.set(“foo”, “bar2”, 4);
kv.get(“foo”, 4); // 輸出 “bar2”
kv.get(“foo”, 5); // 輸出 “bar2”
代碼
class TimeMap {Map<String,TreeMap<Integer,String>> map;/** Initialize your data structure here. */public TimeMap() {map=new HashMap<>();}public void set(String key, String value, int timestamp) {if(!map.containsKey(key))map.put(key,new TreeMap<>());map.get(key).put(timestamp,value);//存儲(chǔ)key ->(timestamp->value)}public String get(String key, int timestamp) {if( map.get(key).floorEntry(timestamp)==null) return "";//沒(méi)有小于或等于目標(biāo)的keyreturn map.get(key).floorEntry(timestamp).getValue();}}/*** 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);*/ 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的leetcode981. 基于时间的键值存储(treemap)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到人飞起来了是什么意思
- 下一篇: 做梦梦到蛇是什么意思啊