LRU Cache数据结构
来源:互联网 发布:nico sm是什么软件 编辑:程序博客网 时间:2024/06/08 09:51
leecode上的146题
LRU数据结构是非常有用的数据结构,本题支持有限的队列,并且get和set方法的复杂度为O(1)
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.
核心要求O(1),
核心思想:双向链表+Hashmap,
import java.util.HashMap;public class LRUCache { int capacity; HashMap<Integer, Node> map = new HashMap<Integer, Node>(); Node head=null; Node end=null; public LRUCache(int capacity) { this.capacity = capacity; } public int get(int key) { if(map.containsKey(key)){ Node n = map.get(key); remove(n); setHead(n); return n.value; } return -1; } public void remove(Node n){ if(n.pre!=null){ n.pre.next = n.next; }else{ head = n.next; } if(n.next!=null){ n.next.pre = n.pre; }else{ end = n.pre; } } public void setHead(Node n){ n.next = head; n.pre = null; if(head!=null) head.pre = n; head = n; if(end ==null) end = head; } public void set(int key, int value) { if(map.containsKey(key)){ Node old = map.get(key); old.value = value; remove(old); setHead(old); }else{ Node created = new Node(key, value); if(map.size()>=capacity){ map.remove(end.key); remove(end); setHead(created); }else{ setHead(created); } map.put(key, created); } } class Node{ int key; int value; Node pre; Node next; public Node(int key, int value){ this.key = key; this.value = value; } }}
1 0
- LRU Cache数据结构简介
- LRU Cache数据结构
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- lru cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU Cache
- LRU cache
- LRU Cache
- LRU Cache
- 三角形(3)
- WOJ 1608 Calculation (暴力搜索/动态规划)
- CNN网络推导和实现
- centOs修改网卡名
- ZOJ 3929 Deque and Balls
- LRU Cache数据结构
- activiti自定义流程之整合(四):整合自定义表单部署流程定义
- tomcat + memcached 实现session共享
- 职责链模式
- 三角形(4)
- Facebook第三方登陆
- storm 报错:java.nio.channels.ClosedChannelException: null
- 三角形(5)
- Android Activity启动过程简读 <1>