leetcode url:https://leetcode.com/problems/lru-cache/
public class LRUCache {
int queue[];
int size=0;
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
public LRUCache(int capacity) {
this.queue=new int[capacity];
}
int positionKey(int queue[],int key){
int i=0;
while(i<size){
if(queue[i]==key)
return i;
i++;
}
return -1;
}
public int get(int key) {
if(map.containsKey(key)){
int p= positionKey(queue,key);
if(p!=0){
for(int i=p-1;i>=0;i--){
queue[i+1]=queue[i];
}
queue[0]=key;
}
return map.get(key);
}else
return -1;
}
public void set(int key, int value) {
if(!map.containsKey(key)){
int deleteKey=queue[queue.length-1];
if(queue.length==size){
map.remove(deleteKey);
}else{
size++;
}
if(size>1){
for(int i=size-2;i>=0;i--){
queue[i+1]=queue[i];
}
}
}else{
int p= positionKey(queue,key);
if(p!=0){
for(int i=p-1;i>=0;i--){
queue[i+1]=queue[i];
}
}
}
map.put(key,value);
queue[0]=key;
}
}