為最近最少使用(lru)快取策略設計乙個資料結構,它應該支援以下操作:獲取資料(get)和寫入資料(set)。
獲取資料get(key):如果快取中存在key,則獲取其資料值(通常是正數),否則返回-1。
寫入資料set(key, value):如果key還沒有在快取中,則寫入其資料值。當快取達到上限,它應該在寫入新資料之前刪除最近最少使用的資料用來騰出空閒位置。
public
class solution
}private
int capacity;
private hashmaphs = new hashmap();
private node head = new node(-1, -1);
private node tail = new node(-1, -1);
public
solution(int capacity)
public
intget(int key)
// remove current
node current = hs.get(key);
current.prev.next = current.next;
current.next.prev = current.prev;
// move current to tail
move_to_tail(current);
return hs.get(key).value;
}public
void
set(int key, int
value)
if (hs.size() == capacity)
node insert = new node(key, value);
hs.put(key, insert);
move_to_tail(insert);
}private
void
move_to_tail(node current)
}
lru快取策略
class listnode class hlistnode public int get int key,listnode no else return 1 public void delnode listnode node else else if node.next null else len...
134 LRU快取策略
為最近最少使用 lru 快取 策略設計乙個資料結構,它應該支援以下操作 獲取資料 get 和寫入資料 set 獲取資料get key 如果快取中存在key,則獲取其資料值 通常是正數 否則返回 1。寫入資料set key,value 如果key還沒有在快取中,則寫入其資料值。當快取達到上限,它應該在...
快取策略之LRU和LFU
快取,就是把資料儲存在本地,簡單實用key value做乙個對映就好了。但為什麼還要快取策略,因為快取的大小需要限制,否則儲存的東西只增不減,時間一長就有很多記憶體浪費。因為資源總是有限,所以優化,因為優化所以複雜 這個是least recently used的縮寫,即最近最少使用。它的邏輯很簡單 ...