当前为游客只读模式。登录后可提交代码判题并保存草稿与进度。

练题计划 · 力扣 HOT 100

LRU 缓存

中等lruCache()
时间限制 2000 ms内存限制 128 MB复杂度要求 时间 get/put O(1),空间 O(capacity)

LRU 缓存

请你设计并实现一个满足 LRU(最近最少使用)缓存约束的数据结构。

与力扣原题语义一致,此处采用函数式接口:传入容量、操作名数组和参数数组,依次执行并返回每次操作的结果。

接口

  • 第一个参数 capacity 是缓存容量。
  • operations[0] 恒为 "LRUCache"(构造,跳过)。
  • "get":参数为 [key],返回值;若 key 不存在返回 -1。
  • "put":参数为 [key, value],返回 null;若超出容量,驱逐最近最少使用的 key。

输入

  • capacity:缓存容量
  • operations:操作名数组,首项为 "LRUCache"
  • values:二维数组,get 时为 [key],put 时为 [key, value]

输出

按顺序返回每个非构造操作的结果:get 返回数字(不存在为 -1),put 返回 null。

示例

输入:

capacity = 2
operations = ["LRUCache","put","put","get","put","get","put","get","get","get"]
values = [[],[1,1],[2,2],[1],[3,3],[2],[4,4],[1],[3],[4]]

输出:

[null, null, 1, null, -1, null, -1, 3, 4]

解释:

  • put(1,1)、put(2,2)
  • get(1) → 1
  • put(3,3):容量满,驱逐 key 2
  • get(2) → -1
  • put(4,4):驱逐 key 1
  • get(1) → -1,get(3) → 3,get(4) → 4
Loading...

输入

[2,["LRUCache","put","put","get","put","get","put","get","get","get"],[[],[1,1],[2,2],[1],[3,3],[2],[4,4],[1],[3],[4]]]

预期输出

[null,null,1,null,-1,null,-1,3,4]
自定义用例