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

设计LRU缓存结构

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

class Solution {
public:
 Solution(int capacity){
 // write code here
    capacity_ = capacity;
 }
 
 int get(int key) {
 // write code here
    auto it = mp_.find(key);
    if (it == mp_.end()) {
        return -1;
    }
    int v = (it->second)->second;
    value_.erase(it->second);
    mp_.erase(key);
    value_.push_front({key, v});
    mp_[key] = value_.begin();

    return v;
 }
 
 void set(int key, int value){
 // write code here
    auto it = mp_.find(key);
    if (it == mp_.end()) {
        if (value_.size() < capacity_) {
            value_.push_front({key, value});
            mp_[key] = value_.begin();
        } else {
            auto it = value_.back();
            mp_.erase(it.first);
            value_.pop_back();
            
            value_.push_front({key, value});
            mp_[key] = value_.begin();
        }
    } else {
        value_.erase(it->second);
        value_.push_front({key, value});
        mp_[key] = value_.begin();
    }
 }

private:
    int capacity_ = 0;
    std::map<int, std::list<std::pair<int, int>>::iterator> mp_;
    std::list<std::pair<int, int>> 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);
 */

全部评论

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务