【Java】主要用到LinkedHashMap这个结构,既有队列有序存放的特点,又有map能够存放键值对的特点
public int[] LRU(int[][] operators,int k) {
//存放输出结果
List<Integer> list = new ArrayList<Integer>();
//存放key-value键值对
Map<Integer,Integer> map = new LinkedHashMap<Integer,Integer>();
for(int[] arr:operators) {
int key = arr[1];
int flag = arr[0];
if(flag==1) {//存
if(map.size()<k) {
map.put(key, arr[2]);
}else {
Iterator<Integer> it = map.keySet().iterator();
map.remove(it.next());
map.put(key, arr[2]);
}
}
else {//取
if(map.containsKey(key)) {
int value = map.remove(key);
list.add(value);
map.put(key, value);
}
else {
list.add(-1);
}
}
}
int[] ans = new int[list.size()];
int i=0;
for(int num:list) {
ans[i++] = num;
}
return ans;
}
京公网安备 11010502036488号