首页 > 编程知识 正文

数据结构静态链表,牛客网怎么用

时间:2023-05-05 16:27:03 阅读:127863 作者:649

主题:

介绍LRU (最近使用的)缓存结构的设计。 假设大小为k,则此结构在构建时确定大小,并具有以下两个功能

1 .将1.set(key,value ) :记录) key,value插入此结构

2.get(key ) :返回与key对应的值

提示:

1 .一个key的设置或获取操作发生时,该key的记录被认为是最常用的,缓存会被刷新。

2 .缓存大小超过k时,删除最不常用的记录。

3.输入二维数组和k。 二维数组每个一维有两个或三个数字,第一个数字是opt,第二个,第三个数字是key,value

当opt=1时,以下两个整数key、value表示set(key、value )

如果opt=2,则以下整数key表示get(key ),如果key不出现或删除,则返回-1

每opt=2输出一个回答

代码:

import java.util.*;

公共类解决方案{

//*

* LRU设计

* @param operators int整数二维数组the ops

* @param k int整数型the k

* @return int整数一维数组

*/

公共int [ ] LRU (int [ ] [ ]操作器,int k ) {

//写代码here

arraylistintegerlist=newarraylistinteger (;

LucacheLRU=newLrucache(k;

for (int [ ] opt :操作器) {

if(opt[0]==1) {

LRU.put(opt[1],opt[2];

}else{

list.add(LRU.get(opt[1] );

}

}

int[]RES=newint[list.size(];

int i=0;

for(intval:list ) {

RES[I]=list.get(I;

I;

}

返回RES;

}

}

class LRUCache{

int cap;

LinkedHashMapInteger,integer cache=newlinkedhashmapinteger,integer (;

publiclrucache (信息容量) {

this.cap=capactity;

}

//Key最近开始使用

私有语音密钥中心(intkey ) {

intval=cache.get(key;

删除//Key并将其重新插入团队末尾

cache.remove(key;

che.put (密钥,val );

}

获取//值

公共插入获取(intkey ) {

if (! cache.containskey(key ) }{

返回- 1;

}

//将此密钥更改为最近使用的

makerecncently (密钥;

返回缓存. get (key;

}

//储存数值

公共语音推送(intkey,int val ) {

if(cache.containskey(key ) ) }

che.put (密钥,val );

//最近使用

makerecncently (密钥;

返回;

}

//超过缓存大小

if(cache.size(=this.cap ) {

//得到链表头的密钥

int oldestKey=cache.keySet ().iterator ) (.next );

cache.remove(oldestkey;

}

//将新key插入链表的末尾

che.put (密钥,val );

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。