题解 | 设计LRU缓存结构

设计LRU缓存结构

https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84

import java.util.*;


public class Solution {
    int size;
    ArrayList<Entry> list =  new ArrayList<Entry>();
    public Solution(int capacity) {
// write code here
        this.size = capacity;
    }

    public int get(int key) {
// write code here
        int index=0;
        Entry entry=null;
        boolean exist=false;
        for (int i=0;i<list.size();i++) {
            if (list.get(i).key == key) {
                index=i;
                exist=true;
                break;
            }
        }
        if(exist){
        entry=list.get(index);
        list.remove(index);
        list.add(entry);
        return entry.value;
        }
        return -1;
    }

    public void set(int key, int value) {
// write code here
        boolean exist=false;
        int index =0;
        for (int i=0;i<list.size();i++) {
            if (list.get(i).key == key) {
                 list.get(i).value=value;
                 index=i;
                 exist=true;
        // Entry entry =null;
        // entry =list.get(index);
        // list.remove(index);
        // list.add(entry);
                 break;
            }
        }
        if(!exist){
          list.add(new Entry(key,value));
          if(list.size()>size){
            list.remove(0);
          }
        }else{
        Entry entry =null;
        entry =list.get(index);
        list.remove(index);
        list.add(entry);
        }
        // Entry entry =null;
        // entry =list.get(index);
        // list.remove(index);
        // list.add(entry);
    }

    static class Entry {
        int key;
        int value;
        public Entry(int key, int value) {
            this.key = key;
            this.value = value;
        }
    }
}

/**
 * Your Solution object will be instantiated and called as such:
 * Solution solution = new Solution(capacity);
 * int output = solution.get(key);
 * solution.set(key,value);
 */

有bug,不加get方法里的最后面的else对已经存在的节点刷新缓存居然也能通过;啧啧啧。

全部评论

相关推荐

头像
10-27 20:19
已编辑
门头沟学院 人工智能
本文略长,献给身处双非、学院本科的低年级依旧陷入迷茫的同学,一个参考。夹杂强烈主观因素,若观点不同,仅当笑料。近日,工作之余的午休时间给母校的学弟学妹进行了宣讲,同时也接受了牛客的访谈,不约而同的触发了两个关键词考研,就业。现象今年和去年,认识的学弟学妹,来自知某、抖某、牛客等系列的学弟学妹,这次宣讲,约有20个学弟学妹来加了我的联系方式,向我取经,聊聊未来,聊聊想法。我这里简单概括一下。1.现在很迷茫,大方向摇摆就业还是考研,但是倾向考研。小方向摇摆竞赛和项目,不知道怎么去做,不知道怎么开始。2.考研的直接目的绝大多数都是为了(混)学历,根本目的就是提高就业竞争力。3.我把他们都拉了个群,在...
牛客85294058...:“私聊能够滔滔不绝,而拉了一个小群之后就完全一声不吭”个人观点这跟从小到大“不要浪费大家时间”的社会环境有关:个人化的提问,如果你上学时有留心、或者参加QA环节多,会注意到这种做法经常是被人骂的。要营造让大家开口的氛围和做出欢迎讨论的议题设置还是比较难的,期待方法探索。
投递大连飞创信息技术有限公司等公司10个岗位
点赞 评论 收藏
分享
已注销:bro不如吃顿疯狂星期四
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务