981 基於時間的鍵值儲存

2021-09-12 23:56:22 字數 2230 閱讀 1767

weekly contest 121的 基於時間的鍵值儲存:

建立乙個基於時間的鍵值儲存類timemap,它支援下面兩個操作:

set(string key, string value, int timestamp)

get(string key, int timestamp)

示例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); // 儲存鍵 "foo" 和值 "bar" 以及時間戳 timestamp = 1

kv.get("foo", 1); // 輸出 "bar"

kv.get("foo", 3); // 輸出 "bar" 因為在時間戳 3 和時間戳 2 處沒有對應 "foo" 的值,所以唯一的值位於時間戳 1 處(即 "bar")

kv.set("foo", "bar2", 4);

kv.get("foo", 4); // 輸出 "bar2"

kv.get("foo", 5); // 輸出 "bar2"

示例2:

輸入:inputs = ["timemap","set","set","get","get","get","get","get"], inputs = [,["love","high",10],["love","low",20],["love",5],["love",10],["love",15],["love",20],["love",25]]

輸出:[null,null,null,"","high","high","low","low"]

所有的鍵/值字串都是小寫的。

所有的鍵/值字串長度都在[1, 100]範圍內。

所有 timemap.set 操作中的時間戳timestamps都是嚴格遞增的。

1 <= timestamp <= 10^7timemap.settimemap.get函式在每個測試用例中將(組合)呼叫總計 120000 次。

本題解題前可以去了解一下時序資料庫,本題其實就是實現乙個簡單的時序資料庫。同時實現也是很簡單:

首先定義乙個valuemap,該maptimestampkey,以valuevalue,這樣就能夠記錄下不同timestamp下的value

然後再定義乙個map,該mapkeykey,以valuemapvalue

需要注意valuemap我選擇的是用treemap,其提供firstkey()能夠快速找到第乙個元素,而floorentry()則會返回與小於或等於給定鍵的最大鍵關聯的鍵值對映,如果沒有這樣的鍵,則返回null

/**

* 981. 基於時間的鍵值儲存

* @author rjh

* create at 2019-01-27

*/public class timemap

public void set(string key, string value, int timestamp) else

}public string get(string key, int timestamp) elseelse

}}else

}}

981 基於時間的鍵值儲存

設計乙個基於時間的鍵值資料結構,該結構可以在不同時間戳儲存對應同乙個鍵的多個值,並針對特定時間戳檢索鍵對應的值。實現 timemap 類 timemap 初始化資料結構物件 void set string key,string value,int timestamp 儲存鍵 key 值 value,...

Leetcode 981 基於時間的鍵值儲存

建立乙個基於時間的鍵值儲存類timamap,它支援下面兩個操作 1 set string key,string value,int timestamp 2 get string key,int timestamp 示例1 輸入 inputs timemap set get get set get g...

SortedList 儲存鍵值對的集合

創 建乙個sortedlist機會用於儲存基於鍵上值排序的鍵值對。可以通過如下屬性獲得sortedlist的唯讀的keys和 values值。public virtual icollection keys public virtual icollection values 下面是sortedlist...