題意理解
設計乙個最近最少使用的lru緩衝機制的類
問題分析
使用stl
hash表unordered_map,雙鏈表list。
list用於緩衝區;map用於查詢元素位置:list中存放key,value 對,map存放key和list的迭代器。
雙鏈表可以插入頭push_front,刪除頭pop_front,插入尾push_back,刪除尾pop_back,
其他0801:保證get,put都是o(1),需要查詢和任意元素增刪改效率都很高,還保持先後順序。我們知道最快的查詢是hash,最快的任意元素增刪改是雙向鍊錶。重複用key做關鍵字,利用鍊錶的迭代器只是鍊錶的具體位置。
鏈結
public:
lrucache(int capacity)
void print()
cout << endl;
}int get(int key)
//cout << "get end" << endl;
//print();
return val;
}void put(int key, int value)
else if (buffer.size() < cap)
else
//cout << "put end" << endl;
//print();
}private:
list> buffer;
unordered_map>::iterator> dict;
int cap = 0;
};
力扣 146LRU快取機制(雙向鍊錶)
題目描述 運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制。它應該支援以下操作 獲取資料 get 和 寫入資料 put 獲取資料 get key 如果關鍵字 key 存在於快取中,則獲取關鍵字的值 總是正數 否則返回 1。寫入資料 put key,value 如果關鍵字已經存在...
146 LRU快取機制
運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制。它應該支援以下操作 獲取資料get和 寫入資料put。獲取資料get key 如果金鑰 key 存在於快取中,則獲取金鑰的值 總是正數 否則返回 1。寫入資料put key,value 如果金鑰不存在,則寫入其資料值。當快取容量...
146 LRU快取機制
運用你所掌握的資料結構,設計和實現乙個 lru 最近最少使用 快取機制。它應該支援以下操作 獲取資料get和 寫入資料put。獲取資料get key 如果金鑰 key 存在於快取中,則獲取金鑰的值 總是正數 否則返回 1。寫入資料put key,value 如果金鑰不存在,則寫入其資料值。當快取容量...