首页 > 设计LRU缓存结构
头像 牛客题解官
发表于 2022-04-22 13:12:36
题目的主要信息: 实现LRU缓存的模拟结构,包括加入函数set,访问函数get 结构有长度限制,加入新数时,超出长度则需要删除最不常访问的,其中set与get都访问 两个函数都是O(1)O(1)O(1) 举一反三: 学习完本题的思路你可以解决如下题目: BM101. 设计LFU缓存结构 方法:哈 展开全文
头像 枫火蓮天
发表于 2022-03-23 14:57:01
思路: 用 LinkedHashMap 可以很容易实现 LRU 缓存,不过面试的时候估计这样不好,还是尽量自己实现数据结构吧🤣 主要想法是使用 JDK 提供的 HashMap,然后自己写一个 Node 节点类,用来保存 value ,并且通过这个 Node 里面的 prev、next 展开全文
头像 城南亦南
发表于 2022-03-18 10:04:11
import java.util.*; public class Solution { Map<Integer, Integer> map; int capacity; public Solution(int capacity) { this. 展开全文
头像 moenya
发表于 2022-04-13 16:54:37
用一个双向链表,哈希表存key以及双向链表的迭代器。 当需要插入新的数据项的时候,如果新数据项在链表中存在(一般称为命中),则把该节点移到链表头部,如果不存在,则新建一个节点,放到链表头部,若缓存满了,则把链表最后一个节点删除即可。 在访问数据的时候,如果数据项在链表中存在,则把该节点移到链表头部, 展开全文
头像 不想看论文
发表于 2022-04-30 11:20:24
方法一在leetcode上是可以通过的,在牛客通过不了,可以学习下。 方法一:利用LinkedHashMap public class Solution extends LinkedHashMap<Integer, Integer>{ private int ca 展开全文
头像 不知道叫啥521
发表于 2022-04-05 20:33:46
一个HASH表,一个双链表,Python实现方案 图片引用自:https://www.cnblogs.com/wei57960/p/13191109.html get操作直接通过HASH得到值 set操作有三种情况: 1.当元素在hash中: 直接修改节点值,并提升到最前面 2.当容量充足: 创建 展开全文
头像 chen_jun_99
发表于 2022-04-03 15:50:32
双链表+哈希表 链表节点中要存储key值,是为了删除时方便更新哈希表 struct Node {     int key;     int val;  &nbs 展开全文
头像 JZZZZZZZZZZZ
发表于 2022-03-21 17:52:22
这道题本质还是要手写LinkedHashMap。 运用Map是因为get 和set都是O(1),运用双向链表是因为插入和删除都是O(1) 同时还需要维护两个指针,一个指向最近一次掉用的节点,一个指向最久未调用的节点     维护最近一次掉用节点,是为了在 展开全文
头像 substance
发表于 2022-06-25 10:36:44
使用匿名内部类,重写removeEldestEntry(),LinkedHashMap的方式实现一个LRU缓存结构 import java.util.*; public class Solution { public LinkedHashMap<Integer,Integer& 展开全文
头像 备战ODing
发表于 2022-03-17 22:18:51
JS的map实现 /**  * @param {number} capacity  */ var Solution = function(capacity) {     this.max = capacity;     this.m 展开全文
头像 留言而你却
发表于 2022-06-03 17:14:20
import java.util.LinkedHashMap; import java.util.Map; public class Solution { private final LinkedHashMap<Integer, Integer> cache; pub 展开全文

等你来战

查看全部