面试真题

C++ · 中等 · 字节跳动

手撕LRUCache

中等 C++ 🎤 字节跳动
参考答案
结论:LRUCache由哈希表+双向链表组成,实现O(1)访问与淘汰。核心要点:1)unordered_map<int, list<pair<int,int>>::iterator>记录key到链表节点迭代器;2)list存储(key,value)按使用时间排序,头部最近;3)get时命中则把节点移到头部并返回值,否则返回-1;4)put时命中更新值并移到头,未命中新建节点,若超容量删尾部节点;5)与LFU区别仅关注最近使用而非频率。示例:cap=2时put(1,1),put(2,2),get(1)后2为最久。
题目整理自公开面经,答案由校招宝自研生成,仅供参考