lru演算法應該對所有計算機\軟工的同學都不陌生了。
那麼要如何實現lru演算法呢?
lru演算法需要設計乙個資料結構,這個資料結構有兩個操作,乙個是get(key):獲取key對應的value,如果key不存在則返回-1
put(key, value): 存入鍵值對
以上兩個操作的複雜度都應該為o(1)
分析上述操作,總結這個資料結構的必要條件為:查詢快、插入塊、刪除快、有序
雜湊表查詢快,但無序
鍊錶有順序,但查詢慢,結合形成雜湊鍊錶。
可以寫下以下**
class
node
}class
lrucache
private
void
addfirst
(node x)
private
void
remove
(node x)
private node removelast()
public
intget
(int key)
public
void
put(
int key,
int value)
else
addfirst
(x);
map.
put(key, x);}
}}/** * 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);
*/
學渣帶你刷Leetcode146 LRU快取機制
運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制。它應該支援以下操作 獲取資料 get 和 寫入資料 put 獲取資料 get key 如果金鑰 key 存在於快取中,則獲取金鑰的值 總是正數 否則返回 1。寫入資料 put key,value 如果金鑰已經存在,則變更其資料值...
作業系統lru演算法 每天一道高頻題 LRU快取機制
題目 lru least recently used 最近最少使用,最近最久未使用,是作業系統常用的,是作業系統常用的一種頁面置換演算法,選擇最近最久未使用的頁面予以淘汰 運用你所掌握的資料結構,設計和實現乙個lru 最近最少使用 快取機制,它應該支援以下操作 獲取資料get和寫入資料put 獲取資...
leetcode刷題之LRU快取
關於此快取機制的介紹,參考國外大佬的文章 lru cache least recently used cache 是最流行的快取驅逐策略之一。同時也是乙個非常常見的面試問題。lru cache會跟蹤快取中的專案的被訪問順序。按照請求順序儲存專案。因此,最近使用的專案將位於快取的頂部,而最近最少用的專...