文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
LRU 缓存
解题思路
Map 迭代器。
- Map 中的键值对按照插入的顺序排列,第一个插入的键值对会排在第一个位置,第二个插入的键值对会排在第二个位置,以此类推。
- map.keys().next().value 会返回 Map 对象中的第一个键值对的键。
const myMap: Map<string, string> = new Map();
myMap.set("key1", "value1");
myMap.set("key2", "value2");
myMap.set("key3", "value3");
console.log(myMap.keys().next().value); // 输出: key1
代码实现
class LRUCache {
capacity: number;
map: Map<number, number>;
constructor(capacity: number) {
this.capacity = capacity;
this.map = new Map();
}
get(key: number): number {
if (this.map.has(key)) {
let value = this.map.get(key);
this.map.delete(key);
this.map.set(key, value);
return value;
}
return -1;
}
put(key: number, value: number): void {
if (this.map.has(key)) {
this.map.delete(key);
}
this.map.set(key, value);
if (this.map.size > this.capacity) {
this.map.delete(this.map.keys().next().value);
}
}
}
/**
* Your LRUCache object will be instantiated and called as such:
* var obj = new LRUCache(capacity)
* var param_1 = obj.get(key)
* obj.put(key,value)
*/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论