思路:
自定义一个链表+哈希表(哈希不需要自己写)
代码:
class LRUCache {
//自定义一个链表
class DlinkedNode{
int key;
int value;
DlinkedNode pre;
DlinkedNode next;
public DlinkedNode(){};
public DlinkedNode(int _key,int _value){
key=_key;
value=_value;
}
}
//创建一个哈希表用于判断是否已存在
private Map<Integer,DlinkedNode> cache=new HashMap<>();
private int size;
private int capacity;
private DlinkedNode head,tail;
public LRUCache(int capacity) {
//初始化
this.capacity=capacity;
this.size=0;
//伪头部和伪尾部
head=new DlinkedNode();
tail=new DlinkedNode();
head.next=tail;
tail.pre=head;
}
public int get(int key) {
DlinkedNode node=cache.get(key);
if(node==null){
return -1;
}
//如果key存在,移到头部
moveToHead(node);
return node.value;
}
public void put(int key, int value) {
DlinkedNode node=cache.ge