LeetCode 146. LRU Cache
来源:互联网 发布:哪里有卖淘宝买家信息 编辑:程序博客网 时间:2024/06/08 12:17
题意
设计一个
思路
使用
当新来一个任务之后,查看
- 如果存在,将此任务置于链表的头结点,操作为:先删除链表中的此任务,然后将此任务重新加入链表
- 如果不存在,说明需要删除链表中一个任务,那么删除尾节点.
代码
class linkList {public: int key; int value; linkList *next; linkList *pre; linkList(int k, int val) { this->key = k; this->value = val; }};class LRUCache {public: map<int, linkList *>mp; int maxSize; int cnt; linkList *headNode = NULL; linkList *endNode = NULL; LRUCache(int capacity) { maxSize = capacity; cnt = 0; headNode = new linkList(0, 0); endNode = new linkList(0, 0); headNode->next = endNode; headNode->pre = NULL; endNode->next = NULL; endNode->pre = headNode; } int get(int key) { if (mp[key] != NULL) { linkList *node = mp[key]; deleteNode(node); addNode(node); return node->value; } return -1; } void put(int key, int value) { if (mp[key] != NULL) { linkList *node = mp[key]; node->value = value; deleteNode(node); addNode(node); } else { linkList *node = new linkList(key, value); mp[key] = node; if (cnt < maxSize) { addNode(node); cnt++; } else { mp.erase(endNode->pre->key); deleteNode(endNode->pre); addNode(node); } } } void deleteNode(linkList *node) { node->pre->next = node->next; node->next->pre = node->pre; } void addNode(linkList *node) { headNode->next->pre = node; node->next = headNode->next; node->pre = headNode; headNode->next = node; }};
阅读全文
0 0
- LeetCode 146. LRU Cache
- [leetcode] 146.LRU Cache
- leetcode 146. LRU Cache
- Leetcode 146. LRU Cache
- Leetcode - 146. LRU Cache
- Leetcode 146. LRU Cache
- [leetcode] 146. LRU Cache
- Leetcode 146. LRU Cache
- leetcode 146. LRU Cache
- LeetCode-146. LRU Cache
- LeetCode 146. LRU Cache
- LeetCode 146. LRU Cache
- Leetcode 146. LRU Cache
- [LeetCode] 146. LRU Cache
- leetcode 146.LRU Cache
- [LeetCode]146. LRU Cache
- Leetcode 146. LRU Cache
- leetcode 146. LRU Cache
- Virtualbox安装Linux虚拟机
- ROS nodelet初探
- SSL与TLS的区别
- Spring事务管理与传播机制详解以及使用实例
- mysql/redis 安装 使用笔记
- LeetCode 146. LRU Cache
- java基础学习总结——线程(二)
- 说说 Jaspersoft Studio 的报表元素
- 条款4:确定对象被使用前已先被初始化
- 判断日期是星期几
- Ubuntu 16.04搭建LAMP开发环境
- LeetCode 66. Plus One
- java基础学习总结——流
- 【思考题】great cells(数学)