import java.util.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class Solution {
private LinkedHashMap<Integer,Integer> lMap = new LinkedHashMap<>();
private int lruSize = 0;
/**
* lru design
* @param operators int整型二维数组 the ops
* @param k int整型 the k
* @return int整型一维数组
*/
public int[] LRU (int[][] operators, int k) {
// write code here
lruSize = k;
List<Integer> result = new ArrayList<>();
if(operators == null){
return new int[]{};
}
for(int i = 0;i < operators.length;i++){
int[] next = operators[i];
if(next[0] == 1){
set(next[1],next[2]);
} else if(next[0] == 2){
result.add(get(next[1]));
}
}
int[] res = new int[result.size()];
for(int i = 0;i<result.size();i++){
res[i] = result.get(i);
}
return res;
}
public void set(Integer key,Integer value){
//第一步 判断是否已经存在 存在就删除
if(lMap.containsKey(key)){
lMap.remove(key);
}
//第二步 判断是否将要超过大小 是就删除最旧的
if(lMap.size() == lruSize){
Iterator<Integer> it = lMap.keySet().iterator();
lMap.remove(it.next());
}
lMap.put(key,value);
}
public int get(Integer key){
if(lMap.containsKey(key)){
//变成最近使用
int value = lMap.get(key);
lMap.remove(key);
lMap.put(key,value);
return value;
}
return -1;
}
}