博客
关于我
leetcode-146. LRU 缓存机制
阅读量:246 次
发布时间:2019-03-01

本文共 1729 字,大约阅读时间需要 5 分钟。

在这里插入图片描述

核心,哈希表+双向链表
分类:

  • 添加节点(缓存未满)
  • 移除节点,添加节点(缓存满)
  • 更新节点(已有节点)

在get的时候断开节点得到独立节点,将节点放到head后面

在这里插入图片描述

class LRUCache {   public:    int capacity_,idle_;    struct Node{           int key_,val_;        Node* next;        Node* pre;        Node(int key,int val):key_(key),val_(val),next(NULL),pre(NULL){   }    };    Node* head=new Node(-1,-1);    Node* tail=new Node(-1,-1);    unordered_map
memo; LRUCache(int capacity):idle_(capacity),capacity_(capacity) { head->next=tail; tail->pre=head; } void putHead(Node* node){ node->next=head->next; node->pre=head; head->next->pre=node; head->next=node; } int get(int key) { if(memo.find(key)==memo.end()) return -1; memo[key]->next->pre=memo[key]->pre; memo[key]->pre->next=memo[key]->next; putHead(memo[key]); return memo[key]->val_; } void put(int key, int value) { if(memo.find(key)==memo.end()&&idle_>0){ idle_--; Node* node=new Node(key,value); memo[key]=node; } else if(memo.find(key)==memo.end()&&idle_==0){ Node* node=tail->pre; node->next->pre=node->pre; node->pre->next=node->next; memo.erase(node->key_); node->val_=value; node->key_=key; memo[key]=node; } else if(memo.find(key)!=memo.end()&&memo[key]!=NULL){ memo[key]->val_=value; memo[key]->next->pre=memo[key]->pre; memo[key]->pre->next=memo[key]->next; } putHead(memo[key]); // cout<
next->key_<
next->val_<
get(key); * obj->put(key,value); */

转载地址:http://kqav.baihongyu.com/

你可能感兴趣的文章
MySQL密码忘记,怎么办?
查看>>
mysql对同一张表进行查询和赋值更新
查看>>
mysql导入数据库出现:Incorrect string value: '\xE7\x82\xB9\xE9\x92\x9F' for column 'chinese' at row 1...
查看>>
mysql导入(ibd文件)
查看>>
Mysql工作笔记006---Mysql服务器磁盘爆满了_java.sql.SQLException: Error writing file ‘tmp/MYfXO41p‘
查看>>
mysql常用命令
查看>>
MySQL常用命令
查看>>
mysql常用命令
查看>>
MySQL常用指令集
查看>>
mysql常用操作
查看>>
MySQL常用日期格式转换函数、字符串函数、聚合函数详
查看>>
MySQL常见架构的应用
查看>>
MySQL常见约束条件
查看>>
MySQL常见错误
查看>>
MySQL常见错误分析与解决方法总结
查看>>
mysql并发死锁案例
查看>>
MySQL底层概述—1.InnoDB内存结构
查看>>
MySQL底层概述—2.InnoDB磁盘结构
查看>>
MySQL底层概述—3.InnoDB线程模型
查看>>
MySQL底层概述—4.InnoDB数据文件
查看>>