农场主有一群牛,每头牛都有一个编号和一个优先级。农场主想要设计一个满足 LRU (最近最少使用) 缓存约束的数据结构来记录牛的优先级。请你实现一个名为 CowCache 的类,该类具有以下功能: CowCache(int capacity):以正整数作为容量 capacity 初始化优先级缓存。 int getPriority(int cowId):如果编号为 cowId 的牛存在于缓存中,则返回该牛的优先级,否则返回 -1。 void setPriority(int cowId, int priority):如果编号为 cowId 的牛已经存在,则更新其优先级为 priority;如果不存在,则向缓存中插入该组 cowId-priority。如果插入操作导致编号数量超过 capacity,则应该逐出最久未使用的编号。 函数 getPriority 和 setPriority 必须以 O(1) 的平均时间复杂度运行。 请实现一个函数 vector cowCacheOperations(vector& operations, vector& args),该函数接收两个参数: operations:一个字符串数组,表示操作序列,其中 "CowCache" 表示初始化缓存,"getPriority" 表示获取优先级,"setPriority" 表示设置优先级。 args:一个整数数组数组,表示操作对应的参数。 函数返回一个整数数组,表示对应的操作结果。对于 "CowCache" 和 "setPriority" 操作,返回 null(用 -2 表示);对于 "getPriority" 操作,返回相应的优先级。
示例1

输入

["CowCache", "setPriority", "setPriority", "getPriority", "setPriority", "getPriority", "setPriority", "getPriority", "getPriority", "getPriority"],[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]

输出

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

输入

["CowCache", "setPriority", "setPriority", "getPriority", "setPriority", "getPriority"],[[1], [1, 1], [2, 2], [1], [3, 3], [2]]

输出

[-2,-2,-2,-1,-2,-1]

备注:
1 0 0 最多调用 2 * 10^5 次 getPriority 和 setPriority
加载中...