LRU Cache LeetCode solution in Python
1class LRUCache {2int N;3list<int> pages;4unordered_map<int, pair<int, list<int>::iterator>> cache;5public:6LRUCache(int capacity) : N(capacity) {78}910int get(int key) {11if (cache.find(key) != cache.end()) {12pages.erase(cache[key].second);13pages.push_front(key);14cache[key].second = pages.begin();15return cache[key].first;16}1718return -1;19}2021void put(int key, int value) {22if (cache.find(key) != cache.end()) {23pages.erase(cache[key].second);24} else {25if (pages.size() == N) {26int lru = pages.back();27cache.erase(lru);28pages.pop_back();29}30}3132pages.push_front(key);33cache[key] = {value, pages.begin()};34}35};