leetcode 146 LRU快取機制

2021-10-07 11:06:10 字數 1294 閱讀 7526

一開始的思路是用map來儲存每個keypair所以就去看了題解,發現需要用到雜湊表來解決搜尋的問題,用雙向列表來解決排列的問題。這方面詳細的介紹就去看題解吧~

class

lrucache

intget

(int key)

void

put(

int key,

int value)

if(hash.

size()

== capacity)

l.push_front

(make_pair

(key, value));

hash[key]

= l.

begin()

;}};

/** * 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);

*/

class

lrucache

intget

(int key)

m[key]

.second =1;

return m[key]

.first;

}void

put(

int key,

int value)

m[key]

=make_pair

(value,1)

;return;}

if(m.

size()

== capacity)

}for

(auto

& p: m)

p.second.second ++

; m[key]

=make_pair

(value,1)

;}else}}

;/**

* 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);

*/

學渣帶你刷Leetcode146 LRU快取機制

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

leetcode146 LRU快取機制

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

LeetCode 146 LRU快取機制

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