这题文字有点多呀,实际上是让你设计数据结构:⾸先要接收⼀个 capacity 参数作为 缓存的最⼤容量,然后实现两个 API,⼀个是 put(key, val) ⽅法存⼊键值 对,另⼀个是 get(key) ⽅法获取 key 对应的 val,如果 key 不存在则返回 -1。要让 put 和 get ⽅法的时间复杂度为 O(1),我们可以 总结出 cache 这个数据结构必要的条件:查找快,插⼊快,删除快,有顺序 之分。 因为显然 cache 必须有顺序之分,以区分最近使⽤的和久未使⽤的数据;⽽ 且我们要在 cache 中查找键是否已存在;如果容量满了要删除最后⼀个数 据;每次访问还要把数据插⼊到队头。

简单看下代码了解下吧

#
# lru design
# @param operators int整型二维数组 the ops
# @param k int整型 the k
# @return int整型一维数组
#
import collections
class Solution:
    def __init__(self, k):
        self.dic = collections.OrderedDict()
        self.capacity = k

    def get(self, key):
        if key not in self.dic: return -1
        val = self.dic.pop(key)
        self.dic[key] = val
        return val

    def set(self, key, value):
        if key in self.dic:
            self.dic.pop(key)
        else:
            if self.capacity > 0:
                self.capacity -= 1
            else:
                self.dic.popitem(last=False)
        self.dic[key] = value

s = input().strip()
idx = s.index("]],")
k = int(s[idx+3:])
ss = s[:idx]
aa = ss.strip("[[").split("],[")
s = Solution(k)
res = []
for r in aa:
    ss = list(map(int, r.strip().split(",")))
    if ss[0] == 1:
        s.set(ss[1], ss[2])
    elif ss[0] == 2:
        x = s.get(ss[1])
        res.append(x)
print(str(res).replace(" ", ""))

麻豆出品