題目:
運用你所掌握的資料結構,設計和實現乙個 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 分析上...