LRU快取機制(雜湊鍊錶)

2021-10-03 11:16:22 字數 856 閱讀 9849

題目:

參考: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 如果金鑰不存在,則寫入其資料值。...