偷懒了,使用Map对象搞了
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* lru design
* @param operators int整型二维数组 the ops
* @param k int整型 the k
* @return int整型一维数组
*/
export function LRU(operators: number[][], k: number): number[] {
// write code here
const LRUMap = new Map()
const result = []
operators.forEach((ops) => {
const [opt, ...item] = ops
let [_key, value] = item
// 检查是否存在
const key = `${_key}`
const has = LRUMap.has(key)
if (opt === 1){
// set opt
if (has){
// 存在就先删除
LRUMap.delete(key)
}else if (k <= LRUMap.size){
// 超过或达到数量,先删除第一个
const iterator = LRUMap[Symbol.iterator]();
const [delKey, _v] = iterator.next().value
LRUMap.delete(delKey)
}
LRUMap.set(key, value)
} else if (opt === 2){
// get opt
let res = -1 // opt result
if (has){
value = LRUMap.get(key)
// 先删除
LRUMap.delete(key)
// 再添加
LRUMap.set(key, value)
res = value
}
result.push(res)
}
})
return result
}