题解 | #设计LRU缓存结构#

设计LRU缓存结构

http://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61


public class Solution {
    /**
     * lru design
     * @param operators int整型二维数组 the ops
     * @param k int整型 the k
     * @return int整型一维数组
     */
    public Map.Entry<Integer,Integer> getHead(LinkedHashMap map) {
        return (Map.Entry<Integer,Integer>)map.entrySet().iterator().next();
    }
    public int[] LRU (int[][] operators, int k) {
        // write code here
        LinkedHashMap<Integer,Integer> map = new LinkedHashMap<>();
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=0;i<operators.length;i++){
            if(operators[i][0]==1){
                if(map.containsKey(operators[i][1]))
                    map.remove(operators[i][1]);
                if(map.size()>=k)
                    map.remove(getHead(map).getKey());
                map.put(operators[i][1],operators[i][2]);
            }else{
                if(map.containsKey(operators[i][1])){
                    int value = map.get(operators[i][1]);
                    map.remove(operators[i][1]);
                    map.put(operators[i][1],value);
                    list.add(value);
                }else{
                    list.add(-1);
                }
           
            }
        }
        int []array = new int[list.size()];
        for(int i=0;i<array.length;i++){
            array[i] = list.get(i);
        }
        return array;
    }
}
全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 15:39
希望奇迹发生的布莱克...:真的是 现在卷实习就是没苦硬吃
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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