981. Time Based Key-Value Store
題目網址:https://leetcode.cn/problems/time-based-key-value-store/
題意:設計一個基於時間的 key-value 的資料結構, 它可以在不同 timestamp 儲存對應同一個 key 的多個值, 並針對特定 timestamp 得到相對應的 key 的 value。
實作
TimeMap
class:
TimeMap()
: 初始化 instancevoid set(String key, String value, int timestamp)
: 儲存key
、value
, 以及timestamp
。String get(String key, int timestamp)
:
- 返回
timestamp_prev
對應的 value, 其中timestamp_prev <= timestamp
- 如果存在多個值, 則返回對應最大的
timestamp_prev
的 value。- 如果不存在, 則返回
""
。注意:
set(key, value, timestamp)
中的timestamp
都是嚴格遞增的。
Solution:
想法:題目的意思如下圖,
key
裡面會儲存values
, 而values
裡面可以有多個{value, timestmap}
pair。由於values
裡面的timestamp
都是嚴格遞增的(已排序), 所以我們可直接使用 Binary Search
class TimeMap { |
- time:$O(log(n))$ ➔ Binary Search, 其中
n
為m[key]
的長度 - space:$O(n)$ ➔ 其中
n
為set()
的次數
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論