LeetCode 34 LRU快取機制

2021-09-27 12:11:58 字數 1451 閱讀 1899

題目:

運用你所掌握的資料結構,設計和實現乙個 lru (最近最少使用) 快取機制。它應該支援以下操作: 獲取資料 get 和 寫入資料 put 。

獲取資料 get(key) - 如果金鑰 (key) 存在於快取中,則獲取金鑰的值(總是正數),否則返回 -1。

寫入資料 put(key, value) - 如果金鑰不存在,則寫入其資料值。當快取容量達到上限時,它應該在寫入新資料之前刪除最近最少使用的資料值,從而為新的資料值留出空間。

示例:

lrucache cache =

newlrucache(2

/* 快取容量 */);

cache.

put(1,

1);cache.

put(2,

2);cache.

get(1)

;// 返回 1

cache.

put(3,

3);// 該操作會使得金鑰 2 作廢

cache.

get(2)

;// 返回 -1 (未找到)

cache.

put(4,

4);// 該操作會使得金鑰 1 作廢

cache.

get(1)

;// 返回 -1 (未找到)

cache.

get(3)

;// 返回 3

cache.

get(4)

;// 返回 4

演算法:

public

class

lrucache

public

intget

(int key)

return-1

;}public

void

put(

int key,

intvalue

)else

if(keys.count == keys.capacity)

keys.

add(key)

; dict.

add(key,

value);

}}/** * 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);

*/

執行結果:

LRU快取機制 LeetCode

演算法思想 1 關鍵字存在 變更資料。2 關鍵字不存在 判斷快取容量是否達到上限 達到了上限,則應該刪除最久未使用的資料 未達上限,直接新增。get約束條件如下 如果關鍵字在快取,獲取該關鍵字的值,否則返回 1。此題目要求的資料結構需要滿足 查詢快 插入 刪除快且有順序之分的特點。於是結合兩個資料結...

leetcode題目 LRU快取機制

題目 運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制 實現 lrucache 類 lrucache int capacity 以正整數作為容量 capacity 初始化 lru 快取 int get int key 如果關鍵字 key 存在於快取中,則返回關鍵字的值,否則返回...

LeetCode 經典題 LRU快取

lru演算法應該對所有計算機 軟工的同學都不陌生了。那麼要如何實現lru演算法呢?lru演算法需要設計乙個資料結構,這個資料結構有兩個操作,乙個是get key 獲取key對應的value,如果key不存在則返回 1 put key,value 存入鍵值對 以上兩個操作的複雜度都應該為o 1 分析上...