题解 | 设计LRU缓存结构

设计LRU缓存结构

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

import java.util.*;


public class Solution {
    Map<Integer, KeyOperate> lfuMap;
    LinkedList<KeyOperate> keyOperateList;
    int size;

    public Solution(int capacity) {
        // write code here
        lfuMap = new HashMap<>(capacity);
        keyOperateList = new LinkedList<>();
        size = capacity;
    }

    public int get(int key) {
        if (lfuMap.containsKey(key)) {
            KeyOperate keyOperate = lfuMap.get(key);
            keyOperateList.remove(keyOperate);
            keyOperateList.addFirst(keyOperate);
            return keyOperate.getValue();
        }
        return -1;
    }

    public void set(int key, int value) {
        if (lfuMap.containsKey(key)) {
            KeyOperate keyOperate = lfuMap.get(key);
            keyOperateList.remove(keyOperate);
            keyOperateList.addFirst(keyOperate);
            keyOperate.setValue(value);
            lfuMap.put(key, keyOperate);
            return;
        }
        KeyOperate keyOperate = new KeyOperate(key, value);
        if (lfuMap.size() == size) {
            KeyOperate last = keyOperateList.removeLast();
            lfuMap.remove(last.getKey());
        }
        lfuMap.put(key, keyOperate);
        keyOperateList.addFirst(keyOperate);
    }


    private class KeyOperate {
        private int key;

        private int value;

        public KeyOperate(int key,int value) {
            this.key = key;
            this.value = value;
        }

        public int getKey() {
            return key;
        }

        public void setKey(int key) {
            this.key = key;
        }

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            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);
 */

全部评论

相关推荐

03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务