LRU Cache LeetCode solution in C++
1class LRUCache {2public:3int mx;4class node {5public:6node *prev, *next;7int key, val;8node(int k, int v) {9key = k, val = v;10}11};12unordered_map<int, node *> mp;13node *head = new node(-1, -1);14node *tail = new node(-1, -1);15LRUCache(int capacity) {16mx = capacity;17mp.reserve(1024);18mp.max_load_factor(0.25);1920head->next = tail;21tail->prev = head;22}2324void addnode(node *temp) {25node *temp1 = head->next;26head->next = temp;27temp->prev = head;28temp->next = temp1;29temp1->prev = temp;30}3132void deletenode(node *temp) {33node *temp1 = temp->prev;34node *temp2 = temp->next;35temp1->next = temp2;36temp2->prev = temp1;37}3839int get(int key) {40if (mp.find(key) != mp.end()) {41node *temp = mp[key];42int res = temp->val;43mp.erase(key);44deletenode(temp);45addnode(temp);46mp[key] = head->next;47return res;48}49return -1;50}5152void put(int key, int value) {53if (mp.find(key) != mp.end()) {54node *temp = mp[key];55mp.erase(key);56deletenode(temp);57}58if (mp.size() == mx) {59mp.erase(tail->prev->key);60deletenode(tail->prev);61}62addnode(new node(key, value));63mp[key] = head->next;64}65};