公告歡迎來到 Larry's notes,近期會持續整理網站。
※ LeetCode, UVa 與 YZUCSE 系列相關文章已從首頁的文章列表中移除。可從首頁的釘選分類瀏覽。
※ LeetCode, UVa 與 YZUCSE 系列相關文章已從首頁的文章列表中移除。可從首頁的釘選分類瀏覽。
LeetCode - 146 解題紀錄
題目說明
建立一個類似快取記憶體的 Class,及對應的一些功能。
解題思路
使用 list<pair<int, int>> 儲存資料,再利用 unordered_map<int, list<pair<int, int>>::iterator> 達到減少時間複雜度的效果。
※ 對於 put 來說,如果資料已經滿了,那新的資料就要覆蓋最久沒有調用到的資料。
參考解法
1 | class LRUCache { |
補充
splice()的功能是串接 List。emplace_front()的功能和push_front()是一樣的,但是前者少了一個複製的動作,效率較高。
參考資料
花花酱 LeetCode 146. LRU Cache O(1)
list::splice()函数详解
STL - emplace 与 push 的区别
list::emplace_back - C++ Reference
list::splice - C++ Reference
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論