146. LRU 缓存
1.34. 在排序数组中查找元素的第一个和最后一个位置2.69. x 的平方根3.367. 有效的完全平方数4.27. 移除元素5.26. 删除有序数组中的重复项6.283. 移动零7.844. 比较含退格的字符串8.977. 有序数组的平方9.209. 长度最小的子数组10.904. 水果成篮11.76. 最小覆盖子串12.76. 最小覆盖子串13.59. 螺旋矩阵 II14.58. 区间和(第九期模拟笔试)15.44. 开发商购买土地16.20. 有效的括号
17.146. LRU 缓存
18.203. 移除链表元素19.707. 设计链表20.206. 反转链表21.24. 两两交换链表中的节点22.19. 删除链表的倒数第 N 个结点23.19. 删除链表的倒数第 N 个结点 Plus24.面试题 02.07. 链表相交25.142. 环形链表 II26.242. 有效的字母异位词27.349. 两个数组的交集28.202. 快乐数29.1. 两数之和30.454. 四数相加 II31.383. 赎金信32.15. 三数之和33.18. 四数之和34.344. 反转字符串35.541. 反转字符串 II36.55. 右旋字符串(第八期模拟笔试)37.28. 找出字符串中第一个匹配项的下标38.459. 重复的子字符串39.232. 用栈实现队列40.225. 用队列实现栈41.20. 有效的括号
\
class LRUCache { public: LRUCache(int capacity) :_capacity(capacity) {} int get(int key) { auto it = _unorderedMap.find(key); if(it != _unorderedMap.end()){ _list.splice(_list.begin(), _list, it->second); return it->second->second; }else{ return -1; } } void put(int key, int value) { auto it = _unorderedMap.find(key); if(it != _unorderedMap.end()){ it->second->second = value; _list.splice(_list.begin(), _list, it->second); }else{ if(_capacity == _list.size()){//满了 auto deletenode = _list.back(); _unorderedMap.erase(_unorderedMap.find(deletenode.first)); _list.pop_back(); } _list.push_front(pair<int, int>(key, value)); _unorderedMap[key] = _list.begin(); } } private: int _capacity; list<pair<int, int>> _list; unordered_map<int, list<pair<int, int>>::iterator> _unorderedMap; };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?