146.LRU cache 题目链接 146. LRU 缓存 - 力扣(LeetCode)
完整代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 class LRUCache {private : int cap=0 ; list<pair<int ,int >> lru; unordered_map<int ,list<pair<int ,int >>::iterator> mp; public : LRUCache (int capacity) { cap = capacity; } int get (int key) { if (mp.find (key)!=mp.end ()){ lru.splice (lru.begin (),lru,mp[key]); return lru.begin ()->second; }else { return -1 ; } } void put (int key, int value) { if (get (key)!=-1 ){ lru.begin ()->second = value; }else { if (lru.size ()==cap){ int delkey = lru.back ().first; lru.pop_back (); mp.erase (delkey); } lru.emplace_front (key,value); mp[key]=lru.begin (); } } };
参考资料 C++实现LRU缓存——LeetCode146 - 简书 (jianshu.com)