当前位置: 首页 > news >正文

郑州哪家做网站最好/昆山网站制作公司

郑州哪家做网站最好,昆山网站制作公司,网站注册系统源码,青少年活动中心网站建设依据LRU:最近最少使用算法。LRU缓存算法,由哈希表和双向链表构成,能以O(1)时间复杂度获取缓存的键值,也能以O(1)的时间复杂度存储键值。 Java中有内置类型LinkedHashMap,可以直接用于LRUCache的实现。C没有,需…

LRU:最近最少使用算法。LRU缓存算法,由哈希表和双向链表构成,能以O(1)时间复杂度获取缓存的键值,也能以O(1)的时间复杂度存储键值。

  • Java中有内置类型LinkedHashMap,可以直接用于LRUCache的实现。C++没有,需要手动实现,这里我手动实现一个。
  • leetcode有一题LRU题目添加链接描述
//双向链表+哈希表
struct Node{int key,val;Node*pre,*next;Node(int k,int v):key(k),val(v),pre(NULL),next(NULL){}
};class DoubleList{public:DoubleList(){size=0;head=new Node(0,0);tail=new Node(0,0);head->next=tail;tail->pre=head;}//在链表尾部添加节点void addTail(Node*x){x->next=tail;x->pre=tail->pre;tail->pre->next=x;tail->pre=x;size++;}//删除某个节点(根据地址)void deleteNode(Node*x){x->pre->next=x->next;x->next->pre=x->pre;size--;//return x;}//删除首节点,并返回其键值,用于反向删除map中的键int deleteFirst(){int key=head->next->key;deleteNode(head->next);return key;}int getSize(){return size;}private:int size;Node*head,*tail;    //tail处是最近访问的
};class LRUCache {
public:LRUCache(int capacity) {this->capacity=capacity;}int get(int key) {if(node_map.find(key)==node_map.end())return -1;Node*p=node_map[key];makeRecent(p);return p->val;}void put(int key, int value) {//如果已经存在,则更新值if(node_map.find(key)!=node_map.end()){Node*p=node_map[key];makeRecent(p);p->val=value;return;}//不存在的情况下://如果满了if(capacity==cache.getSize()){removeLRU();}Node*p=new Node(key,value);cache.addTail(p);//放入哈希表node_map[key]=p;}//将某个节点提升到recentvoid makeRecent(Node*x){cache.deleteNode(x);cache.addTail(x);}//删除LRU节点缓存void removeLRU(){int key=cache.deleteFirst();node_map.erase(key);}
private:int capacity;DoubleList cache;unordered_map<int,Node*>node_map;
};
class LRUCache {int cap;LinkedHashMap<Integer, Integer> cache = new LinkedHashMap<>();public LRUCache(int capacity) { this.cap = capacity;}public int get(int key) {if (!cache.containsKey(key)) {return -1;}// 将 key 变为最近使用makeRecently(key);return cache.get(key);}public void put(int key, int val) {if (cache.containsKey(key)) {// 修改 key 的值cache.put(key, val);// 将 key 变为最近使用makeRecently(key);return;}if (cache.size() >= this.cap) {// 链表头部就是最久未使用的 keyint oldestKey = cache.keySet().iterator().next();cache.remove(oldestKey);}// 将新的 key 添加链表尾部cache.put(key, val);}private void makeRecently(int key) {int val = cache.get(key);// 删除 key,重新插入到队尾cache.remove(key);cache.put(key, val);}
}
http://www.jmfq.cn/news/5083597.html

相关文章:

  • 怎么用h5网站做动效/百度网盘app下载
  • 网上停车场做施工图人员网站/搜索引擎调词工具
  • 免费微信小程序开发者工具/整站优化
  • asp动态网站衣服销售/google关键词搜索技巧
  • 重庆教育网站建设/精准客源
  • 公司网站制作方案/上海百度推广
  • 营销型网站怎么做/做外贸用什么软件找客户
  • 深圳网站建设i9988/百度浏览器官网
  • 做网站办什么营业执照/最新的疫情最新消息
  • 天津 网站制作/推广工具有哪些
  • 湘潭网站建设湘潭振企专业/seo整站优化外包公司
  • dedecms仿新闻网站/武安百度seo
  • 网站怎么做镜像/公司网站建设步骤
  • 做网页的软件是什么/南京seo关键词排名
  • 世界比赛排名/中和seo公司
  • 访问域名/seo网络推广专员招聘
  • 动态网站开发实训心得/谷歌google下载安卓版 app
  • 做网站一般注意些什么/怎样优化标题关键词
  • 漯河网做网站/seo关键词排名优化如何
  • 做网站 怎么做留言/十堰seo优化
  • 想要注册一个公司网站怎么做/网址提交入口
  • 党刊网站怎么做/怎么去推广自己的平台
  • 北京通州做网站/谷歌搜索引擎优化
  • 新网站该如何做网站优化呢/模板建站优点
  • 网站被降权了怎么办/西安企业seo
  • wordpress 登陆后查看/seo优化外包
  • 顺德网站建设收费标准/万网域名官网
  • 公司网站建设费/游戏代理推广渠道
  • 南昌网站建设过程/东莞做网站推广公司
  • 个人做门户网站/百度软件中心官网