LeetCode 146 LRU快取機制

2021-09-25 06:16:38 字數 1327 閱讀 2272

使用hash_map和雙向鍊錶來做這題

class lrucache 

}; int cachesize;

int currentsize;

unordered_mapnodes;

cachenode* head ;

cachenode* last;

lrucache(int capacity)

//獲取某個節點如果存在返回並且把該節點放到煉表頭,不存在返回-1

int get(int key)

return node->value;

} return result;

} //將資料放入map中和鍊錶中

void put(int key, int value)

else

}else//沒找到的話就建立這個節點的資料結構

sethead(node);

nodes[key] = node;

} }//將節點從雙向鍊錶中拿出來

void remove(cachenode* node)

else

node->pre->next=node->next;

if (node->next == null)

last = node->pre;

else

node->next->pre=node->pre;

}cachenode* gethead()

//更新last和head的

//lru實現使用雙向鍊錶和雜湊函式:為什麼??

class lrucache

int get(int key)

else//不存在的話,返回-1

}void put(int key, int value)

else//如果不存在的話

caches.push_front(charu);

cachemap[key] = caches.begin();

} }private:

unordered_map>::iterator> cachemap;

int cap;

list> caches;

};

學渣帶你刷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 如果金鑰不存在,則寫入其資料值。當快取容量...