首页 > 其他分享 >LRU牛客比较简单的实现

LRU牛客比较简单的实现

时间:2023-05-27 16:55:30浏览次数:43  
标签:map capacity 比较简单 int value 牛客 LRU key public

https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84?tpId=295&tqId=2427094&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj

public class Solution {
    Map<Integer,Integer> map;
    int capacity;
    public Solution(int capacity) {
         // write code here
        this.capacity = capacity;
        // LinkedHashMap可以保证插入有序
        map = new LinkedHashMap<>(capacity);
    }
 
    public int get(int key) {
         // write code here
        Integer value = map.get(key);
        if(value!=null){
            if(map.size()>1){
                map.remove(key);
                map.put(key,value); // 存入最后
            }
        }else{
            return -1;
        }
        return value;
    }
 
    public void set(int key, int value) {
         // write code here
        if(map.containsKey(key)){
            map.remove(key);
        }
        if(map.size()>=capacity){
            //这中相当于有一个指针,指向第一个数的前面 keySet() 返回key的集合
            //next() 取出下一个数,指针指向下一位
            Integer firstKey = map.keySet().iterator().next();
            map.remove(firstKey);
        }
        map.put(key,value);
    }
}

 

标签:map,capacity,比较简单,int,value,牛客,LRU,key,public
From: https://www.cnblogs.com/huhuuu/p/17436978.html

相关文章

  • C++文件流结构体序列化,并查集,LRU缓存
    c语言中的文件操作中用fprintf将数据写入到文件中,用fscanf将文件读入内存中,而c++中也有ostream和istream作为键盘流输入,屏幕流输出,对于文件也有ofstream/istream来进行相关的操作.如图:图中表示将一个结构体的的数据输入到文件中,并从文件中读取数据,并用得到的数据初始化一......
  • 牛客练习赛108
    风间分析:暴力实现:inta[N],b[N];voidsolve(){res=0;scanf("%lld",&n);for(inti=1;i<=n;i++)scanf("%lld",&a[i]);for(inti=1;i<=n;i++)scanf("%lld",&b[i]);......
  • maximum clique 1 (牛客多校) (转化为图论, 二分图的最大独立集)
    题面大意:给出N个数, 找出最大的子集size使得子集中,任意2个数的二进制下,每一位,至少有2位不同 思路:N只有5000,可以直接暴力建边,转化位图论2种建边方式:一种是能在一个集合的2个数,建一条边,(没有办法去处理这个问题)一种是不能在一个集合的就建一条......
  • 146. LRU 缓存
      labuladong题解思路难度中等2682请你设计并实现一个满足  LRU(最近最少使用)缓存 约束的数据结构。实现 LRUCache 类:LRUCache(intcapacity) 以 正整数 作为容量 capacity 初始化LRU缓存intget(intkey) 如果关键字 key 存在于缓存中,则返......
  • subsequence1 (牛客多校) (2个串比大小, DP, 组合数)
    题面大意:给定2个字符串,问有多少个子字符串S,是大于t的 思路数据范围很小,因此考虑n^2做法分2步,位数s>位数t的时候然后位数相等的时候利用DP,处理,分别就是枚举前k个数和s相同,然后k+1个数比t大就可以. 具体思路自己想想,和那个比较像   cons......
  • 【牛客小白72】E 二分答案
    https://ac.nowcoder.com/acm/contest/56825/E题意给你\(10^{10}\)个数(数组an个数,数组bm个数,数是a*b的集合),有\(Q\)(Q为常数)个询问,每次问你第\(x\)小的数是多少思路最暴力的思路肯定是把所有数放在一起,然后排序。易知时间复杂度为\(nlogn(n=1e10)\),会超时。继续思......
  • Interval(20年牛客多校5)
    传送门题意有一个数列\(A(0\leqslantA_i\lt2^{30})\)长度为\(N(1\leqslantN\leqslant10^5)\),\(F(l,r):=A_l\&A_{l+1}\&\cdots\&A_r\),\(S(l,r):=\left\{F(a,b)|\min(l,r)\leqslanta\leqslantb\leqslant\max(l,r)\right\}\),有\(Q(1\le......
  • 【算法】LRU 最近最少使用算法
    1 前言上节我们介绍了几个页面替换算法,也就是一种淘汰策略,这节我们就看一种新的算法:LRU哈。2  LRULRU(Least Recently Used,最近最少使用)算法根据页面的历史请求记录来进行淘汰页面,其核心思想是“如果页面数据最近被访问过,那么将来被访问的几率也更高”。基于这个思想,会......
  • 牛客 55994 2023牛客五一集训派对day3 D Points Construction Problem
    D-PointsConstructionProblem_2023牛客五一集训派对day3(nowcoder.com)将图上恰好\(n\)个点染成黑色,使得图上相邻的黑白点对数量恰好为\(m\)考虑\(n\)个黑点如果不相邻,则两个点的贡献互不影响考虑相邻的情况,我们把相邻的点连边,则贡献为每一个连通块的贡献的和,我们用......
  • 【专栏精选】Unity热更新之ILRuntime
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复专栏,查看更多专栏文章。洪流学堂,让你快人几步。你好,我是郑洪智。小新:“热更新真的是打开了一片天啊,现在我越发感觉热更新能做的事情太多了。之前做了一个项目,每次打包都好花费半小时,如果有......