使用linkedhashmap来实现LRU算法
import java.util.ArrayList;
import java.util.*;
public class Solution {
/**
* lru design
* @param operators int整型二维数组 the ops
* @param k int整型 the k
* @return int整型一维数组
*/
public int[] LRU (int[][] operators, int k) {
// write code here
int size = k;
LinkedHashMap<Integer,Integer> map = new LinkedHashMap<Integer, Integer>(size,0.75f,true){
private static final long serialVersionUID = 1;
//removeEldestEntry在添加元素的时候调用
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > size;
}
};
ArrayList<Integer> arrayList = new ArrayList<Integer>();
for (int i = 0; i <operators.length ; i++) {
if(operators[i][0]==1){
map.put(operators[i][1],operators[i][2]);
}else if(operators[i][0]==2){
if(map.containsKey(operators[i][1])){
arrayList.add(map.get(operators[i][1]));
}else {
arrayList.add(-1);
}
}
}
int[] arr = new int[arrayList.size()];
int j=0;
for (Integer i:arrayList) {
arr[j]=i;
j++;
}
return arr;
}
}