题目要求 get 和 set 请求都是 O(1)O(1)O(1) 的平均时间复杂度,那很容易想到使用 map,但如果 value 是 int 型,那就很难实现 LRU 的目的,我们可以设计一个双端链表,将最近访问和插入的节点插入到链表的头节点,当缓存不够时,只需要移出链表尾部的节点,因为要是 set 操作时间复杂度也是 O(1)O(1)O(1) 所以必须时刻记录尾节点的位置,这也是为什么要使用双端链表的目的。 // 双向链表 type DLinkedNode struct{ key,value int prev,next *DLinkedNode } type Solution...