博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode学习笔记(146. LRU缓存机制)
阅读量:4047 次
发布时间:2019-05-25

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

在这里插入图片描述

这道题算法方面倒不是难点,主要在于类和数据结构额设计,如何高效合理。

struct DListNode{
int key, value; DListNode* pre; DListNode* next; DListNode():key(0),value(0),pre(nullptr),next(nullptr){
} DListNode(int _key, int _value):key(_key),value(_value),pre(nullptr),next(nullptr){
}};class LRUCache {
private: unordered_map
cache; DListNode* head; DListNode* tail; int capacity, size;public: LRUCache(int _capacity):capacity(_capacity),size(0) {
head = new DListNode(); tail = new DListNode(); head->next = tail; tail->pre = head; } int get(int key) {
if(!cache.count(key)) return -1; DListNode* temp = cache[key]; movetohead(temp); return temp->value; } void put(int key, int value) {
if(!cache.count(key)){
DListNode* node = new DListNode(); node->key = key; node->value = value; addtohead(node); cache[key] = node; size++; if(size>capacity){
DListNode* removed = removetail(); cache.erase(removed->key); size--; } }else{
DListNode* temp = cache[key]; temp->value = value; movetohead(temp); } } void addtohead(DListNode* node){
head->next->pre = node; node->next = head->next; node->pre = head; head->next = node; } void removenode(DListNode* node){
node->pre->next = node->next; node->next->pre = node->pre; } void movetohead(DListNode* node){
removenode(node); addtohead(node); } DListNode* removetail(){
DListNode* node = tail->pre; removenode(node); return node; }};/** * Your LRUCache object will be instantiated and called as such: * LRUCache* obj = new LRUCache(capacity); * int param_1 = obj->get(key); * obj->put(key,value); */

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

你可能感兴趣的文章
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
关于进制转换的具体实现代码
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力旅游行业新发展
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>