农场里有很多牛,每头牛都有一个整数编号。农场主想要实现一个牛群管理系统,以便更好地照顾牛群。在这个系统中,农场主可以查找某头牛的编号,如果编号存在,则返回该编号对应的牛的年龄;如果不存在,则返回 -1。同时,农场主还可以添加新牛的编号和年龄。但是由于系统的容量有限,当添加新牛导致系统容量超过限制时,需要移除最久未使用的牛的信息。 请你设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构。 实现 CowManagement 类: CowManagement(int capacity) 以正整数作为容量 capacity 初始化牛群管理系统 int get(int key) 如果编号 key 存在于系统中,则返回该编号对应的牛的年龄,否则返回 -1。 void put(int key, int value) 如果编号 key 已经存在,则更新其对应的牛的年龄 value ;如果不存在,则向系统中添加该编号和年龄。如果添加操作导致编号数量超过 capacity ,则应该移除最久未使用的编号。 函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。 输入operations数组,0表示创建类,1表示调用put,2表示调用get 输入values数组,第一个元素表示capacity,后续两个元素的数组表示put的key和value,一个元素的数组表示get的key。
示例1

输入

[[0], [1], [1], [2], [1], [2], [1], [2], [2], [2]],[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]

输出

[1,-1,-1,3,4]
示例2

输入

[[0], [1], [1], [1], [2], [1], [2], [2], [2], [2]],[[2], [1, 1], [2, 2], [3, 3], [1], [4, 4], [1], [2], [3], [4]]

输出

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

备注:
1 0 0 最多调用 5 * 10^4 次 get 和 put
加载中...