4.【Hard】LRU Cache--Time Limit Exceeded

来源:互联网 发布:中国数据泄露防护市场 编辑:程序博客网 时间:2024/04/29 16:04

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;    }}
0 0