class LRUCache {
public:
LRUCache(int capacity) {
capacity_ = capacity;
}
void put(int key, int value) {
if (table_.count(key) != 0) {
lru_.splice(lru_.begin(), lru_, table_[key]);
table_[key]->second = value;
return;
}
lru_.emplace_front(key, value);
table_[key] = lru_.begin();
if (table_.size() > capacity_) {
table_.erase(lru_.back().first);
lru_.pop_back();
}
}
int get(int key) {
if (table_.count(key) != 0) {
lru_.splice(lru_.begin(), lru_, table_[key]);
return table_[key]->second;
}
return -1;
}
int capacity_;
unordered_map<int, list<pair<int, int>>::iterator> table_;
list<pair<int, int>> lru_;
};
【LRU】leetcode. LRU缓存
最新推荐文章于 2024-08-04 09:27:27 发布