演算法 LRU 146 LRU快取機制

2021-08-18 22:32:35 字數 1121 閱讀 2497

設計和實現乙個lru(最近最少使用)快取資料結構,使它應該支援以下操作:getput

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

put(key, value)- 如果金鑰不存在,請設定或插入值。當快取達到其容量時,它應該在插入新專案之前使最近最少使用的專案作廢。

後續:

你是否可以在 o(1) 時間複雜度中進行兩種操作?

案例:

lrucache cache

=new lrucache( 2

/* 容量 */ );

cache

.put(1, 1);

cache

.put(2, 2);

cache

.get(1); // 返回 1

cache

.put(3, 3); // 該操作,會將 key 2 作廢

cache

.get(2); // 返回 -1 (結果不存在)

cache

.put(4, 4); // 該操作,會將 key 1 作廢

cache

.get(1); // 返回 -1 (結果不存在)

cache

.get(3); // 返回 3

cache

.get(4); // 返回 4

leetcode accepted

class lrucache 

int get(int key)

return res;

}void put(int key, int value)

else

if (count == cap)

else

queue.push_front(make_pair(key, value));

m[key] = queue.begin();

}};

146 LRU快取機制

運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制。它應該支援以下操作 獲取資料get和 寫入資料put。獲取資料get key 如果金鑰 key 存在於快取中,則獲取金鑰的值 總是正數 否則返回 1。寫入資料put key,value 如果金鑰不存在,則寫入其資料值。當快取容量...

146 LRU快取機制

運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制。它應該支援以下操作 獲取資料get和 寫入資料put。獲取資料get key 如果金鑰 key 存在於快取中,則獲取金鑰的值 總是正數 否則返回 1。寫入資料put key,value 如果金鑰不存在,則寫入其資料值。當快取容量...

146 LRU快取機制

運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制。它應該支援以下操作 獲取資料 get 和 寫入資料 put 獲取資料 get key 如果金鑰 key 存在於快取中,則獲取金鑰的值 總是正數 否則返回 1。寫入資料 put key,value 如果金鑰不存在,則寫入其資料值。...