[Leetcode] LRU Cache (Java)
来源:互联网 发布:mac地址一样 编辑:程序博客网 时间:2024/05/16 10:28
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.
实现LRU
用HashMap+LinkedList实现
public class LRUCache { static class ListNode {int key;int value;ListNode next;ListNode pre;ListNode(int key,int value) {this.key = key;this.value = value;pre = null;next = null;}}private Map<Integer, ListNode> map;private int size;private int capacity;private ListNode head;private ListNode tail;public LRUCache(int capacity) {if(capacity<1)return;map = new HashMap<Integer, ListNode>();size = 0;this.capacity = capacity;head = new ListNode(-1,-1);tail = new ListNode(-1,-1);head.next = tail;tail.pre = head;}public int get(int key) {if(map.containsKey(key)){ListNode tmp = map.get(key);tmp.pre.next=tmp.next;tmp.next.pre=tmp.pre;head.next.pre=tmp;tmp.next=head.next;tmp.pre=head;head.next=tmp;return tmp.value;}return -1;}public void set(int key, int value) {if(map.containsKey(key)){ListNode tmp = map.get(key);tmp.pre.next=tmp.next;tmp.next.pre=tmp.pre;head.next.pre=tmp;tmp.next=head.next;tmp.pre=head;head.next=tmp;tmp.value=value;}else {if(size==capacity){map.remove(tail.pre.key);tail.pre.pre.next=tail;tail.pre=tail.pre.pre;ListNode tmp = new ListNode(key,value);map.put(key, tmp);head.next.pre=tmp;tmp.next=head.next;tmp.pre=head;head.next=tmp;}else if(size<capacity){ListNode tmp = new ListNode(key,value);map.put(key, tmp);head.next.pre=tmp;tmp.next=head.next;tmp.pre=head;head.next=tmp;size++;}}}}
0 0
- [Leetcode] LRU Cache (Java)
- [leetCode] LRU Cache (Java)
- LeetCode|LRU Cache-java
- LeetCode LRU Cache (Java实现)
- [LeetCode] 146. LRU Cache java
- 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
- 如何解决Rational Rose无法启动问题
- 【java】向文本文件中写入随机整数(供测试)
- 网页表格内容导入excel
- 如何轻松学习Python
- WIN7下硬盘安装ubuntu12.04出现的种种问题及解决方案
- [Leetcode] LRU Cache (Java)
- 数据结构之KMP算法---poj2406---Power Strings
- 远程调用原理与对比RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB
- 开发笔记之20140217
- 强势领导力-4-历史人物借鉴及经验教训
- java -verbose 命令
- 关于ContentProvider 使用replace
- 花影缭乱,人已黯然
- 【java】求大数的阶乘