LRU快取設計

2021-09-27 06:22:40 字數 1202 閱讀 4868

設計乙個lru演算法(最近最少移除)來實現快取

思路:

**:

public

class

lrucache

//刪除中間節點

public

void

remove

(string key)

/** * 刪除節點

* @param node

*/public string removenode

(node node)

else

if(node == head)

else

return node.key;

}/**

* 尾部新增節點

* @param node

*/private

void

addnode

(node node)

//初始化head 和 end

if(head == null)

end = node;

}/**

* 重新整理被訪問節點位置

* @param node

*/private

void

refreshnode

(node node)

removenode

(node)

;addnode

(node);}

//插入

private

void

put(string key, string value)

node =

newnode

(key, value)

;addnode

(node)

; hashmap.

put(key, node);}

else

}public string get

(string key)

refreshnode

(node)

;return node.value;

}public

static

void

main

(string[

] args)

}class

node

}

LRU快取的設計

特點與應用 應用場景 效能要求 首先我們進行了分析,k v結構最常用的就是我們的hashmap,用hashmap訪問資料,可以達到o 1 分析 解決方案 新增到頭部 addfirst newnode cache.put key,newnode private void addfirst node n...

設計LRU快取結構

設計lru快取結構 設計lru快取結構,該結構在構造時確定大小,假設大小為k,並有如下兩個功能 要求 set和get方法的時間複雜度為o 1 某個key的set或get操作一旦發生,認為這個key的記錄成了最常使用的。當快取的大小超過k時,移除最不經常使用的記錄,即set或get最久遠的。輸入描述 ...

設計LRU快取結構

設計lru快取結構 描述 設計lru快取結構,該結構在構造時確定大小,假設大小為k,並有如下兩個功能 要求 set和get方法的時間複雜度為o 1 某個key的set或get操作一旦發生,認為這個key的記錄成了最常使用的。當快取的大小超過k時,移除最不經常使用的記錄,即set或get最久遠的。若o...