題目:
參考:solution/lru-ce-lue-xiang-jie-he-shi-xian-by-labuladong/
運用你所掌握的資料結構,設計和實現乙個 lru (最近最少使用) 快取機制。它應該支援以下操作: 獲取資料 get 和 寫入資料 put 。
獲取資料 get(key) - 如果金鑰 (key) 存在於快取中,則獲取金鑰的值(總是正數),否則返回 -1。
寫入資料 put(key, value) - 如果金鑰不存在,則寫入其資料值。當快取容量達到上限時,它應該在寫入新資料之前刪除最近最少使用的資料值,從而為新的資料值留出空間。
題解:unordered_map+雙向鍊錶,get和put操作實現o(1)。
class
lrucache
intget
(int key)
void
put(
int key,
int value)
//加入資料,更新list/map
li.push_front
(make_pair
(key,value));
mp[key]
= li.
begin()
;}else}}
;/**
* your lrucache object will be instantiated and called as such:
* lrucache* obj = new lrucache(capacity);
* int param_1 = obj->get(key);
* obj->put(key,value);
*/
146 LRU 快取機制(雙向鍊錶 雜湊表)
難度 中等 運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制 實現 lrucache 類 lrucache int capacity 以正整數作為容量 capacity 初始化 lru 快取 int get int key 如果關鍵字 key 存在於快取中,則返回關鍵字的值,否...
雙向鍊錶與LRU快取淘汰機制
雙向鍊錶作為在日常開發中最常用的資料結構之一,應用十分廣泛,在諸多著名開源專案中如redis的list結構,groupcache的lru中均是核心實現。在設計此類資料集合的時候,外面看上去鍊錶似乎與陣列相似,但鍊錶是乙個非連續性記憶體的儲存方案,提供了高效的節點重排能力與順序訪問方式,對比與運算元組...
LRU快取機制
運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制。它應該支援以下操作 獲取資料 get 和 寫入資料 put 獲取資料 get key 如果金鑰 key 存在於快取中,則獲取金鑰的值 總是正數 否則返回 1。寫入資料 put key,value 如果金鑰不存在,則寫入其資料值。...