Leetcode: LRU Cache
来源:互联网 发布:力士乐plc编程软件 编辑:程序博客网 时间:2024/04/29 21:09
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations:get
and set
.
get(key)
- Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.set(key, value)
- Set or insert the value if the key is not already present. When the cache reached its capacity, it should invalidate the least recently used item before inserting a new item.
public class LRUCache {private int capacity;private HashMap<Integer, Node> map = new HashMap<Integer, Node>();private Node head = new Node(-1, -1);private Node tail = new Node(-2, -2);public LRUCache(int capacity) {this.capacity = capacity;head.next = tail;tail.pre = head;}public int get(int key) {if (!map.containsKey(key))return -1;Node cur = map.get(key);cur.pre.next = cur.next;cur.next.pre = cur.pre;attach(cur);return cur.value;}public void set(int key, int value) {if (map.containsKey(key)) {Node cur = map.get(key);cur.value = value;cur.pre.next = cur.next;cur.next.pre = cur.pre;attach(cur);} else {if (map.size() == capacity)dettach();Node cur = new Node(key, value);attach(cur);map.put(key, cur);}}public void dettach(){Node last = tail.pre;last.pre.next = last.next;last.next.pre = last.pre;map.remove(last.key);}public void attach(Node cur){cur.next = head.next;cur.next.pre = cur;head.next = cur;cur.pre = head;}private class Node {public Node pre = null;public int key;public int value;public Node next = null;Node(int key, int value) {this.key = key;this.value = value;}}}
- LeetCode LRU 缓存 LRU Cache
- LRU Cache | leetcode
- Leetcode: LRU Cache
- LeetCode:LRU Cache
- Leetcode: LRU Cache
- [LeetCode] LRU Cache
- leetcode之LRU Cache
- [LeetCode]LRU Cache
- [LeetCode] LRU Cache
- leetcode LRU Cache
- LeetCode题解:LRU Cache
- LeetCode | LRU Cache
- Leetcode: LRU Cache
- [LeetCode] LRU Cache
- LeetCode OJ:LRU Cache
- Leetcode LRU Cache
- LeetCode - LRU Cache
- [Leetcode] LRU Cache (Java)
- QQ群推广最大化营销效果分析
- HMM 自学教程(一)引言
- WP8开发学习(4):Style样式的四种使用
- Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
- 【Android】数据存储之SDcard
- Leetcode: LRU Cache
- MySql源码安装
- Android2.3.5 vold个人总结
- 编写OpenCV程序时,需要注意的事项(持续更新)
- 双11suning易购服务器承受不了太多用户访问
- iOS core graphic使用分析
- 数据挖掘是什么
- wait和waitpid详解
- 思科2960交换机配置命令