演算法 模擬LRU機制

2022-07-03 11:45:15 字數 1106 閱讀 7893

運用你所掌握的資料結構,設計和實現乙個 lru (最近最少使用) 快取機制 。

實現 lrucache 類:

lrucache(int capacity) 以正整數作為容量 capacity 初始化 lru 快取

int get(int key) 如果關鍵字 key 存在於快取中,則返回關鍵字的值,否則返回 -1 。

void put(int key, int value) 如果關鍵字已經存在,則變更其資料值;如果關鍵字不存在,則插入該組「關鍵字-值」。當快取容量達到上限時,它應該在寫入新資料之前刪除最久未使用的資料值,從而為新的資料值留出空間。

leetcode

解題思路:利用雙向鍊錶,可以在o(1)的時間內完成末尾的刪除。

雙向鍊錶的建立思想:雙向鍊錶

class

lrucache

public

intget

(int key)

int val = map.

get(key)

.val;

put(key, val)

;return val;

}public

void

put(

int key,

int value)

else

cache.

addfirst

(x);

map.

put(key, x);}

}}class

node

}class

doublelist

// 在鍊錶頭部新增節點 x

public

void

addfirst

(node x)

// 刪除鍊錶中的 x 節點(x 一定存在)

public

void

remove

(node x)

// 刪除鍊錶中最後乙個節點,並返回該節點

public node removelast()

// 返回鍊錶長度

public

intsize()

}

演算法 模擬LRU機制

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

演算法 LRU 146 LRU快取機制

設計和實現乙個lru 最近最少使用 快取資料結構,使它應該支援以下操作 get和put。get key 如果金鑰存在於快取中,則獲取金鑰的值 值總是正數 否則返回 1。put key,value 如果金鑰不存在,請設定或插入值。當快取達到其容量時,它應該在插入新專案之前使最近最少使用的專案作廢。後續...

LRU快取機制演算法實現

就是一種快取淘汰策略。計算機的快取容量有限,如果快取滿了就要刪除一些內容,給新內容騰位置。但問題是,刪除哪些內容呢?我們肯定希望刪掉哪些沒什麼用的快取,而把有用的資料繼續留在快取裡,方便之後繼續使用。那麼,什麼樣的資料,我們判定為 有用的 的資料呢?lru 快取淘汰演算法就是一種常用策略。lru 的...