设计一个简单的LRU缓存(Least Recently Used),支持 get 和 put 操作,要求 get 和 put 的时间复杂度都是 O(1)。
分类: technical
难度: easy
标签:
答题技巧
["需要使用哈希表 + 双向链表的组合结构","哈希表用于O(1)查找节点,双向链表用于O(1)移动/删除节点","get 操作:不存在返回-1,存在则把节点移到头部(最近使用)","put 操作:已存在则更新值并移到头部;不存在则新增,容量满则删除尾部节点","初级岗位可以接受只说思路+伪代码","提到JavaScript中可以用Map实现(Map本身保持插入顺序)"]
参考答案
使用 Map + 手动维护最近使用顺序(或直接用 Map 特性) 核心思路: - get(key) → 若存在,返回值并把key提到最新 - put(key, value) → 若存在,更新值并提到最新;若不存在,新增,超容量则移除最旧的