Hash map + doubly linked list
▸1map: key → node; DLL ordered newest → oldest2get(key):3 if key not in map: return -1 // MISS4 node ← map[key] // O(1) lookup5 moveToFront(node) // splice + relink, O(1)6 return node.value7put(key, value):8 if key in map:9 node.value ← value; moveToFront(node) // UPDATE10 else:11 if size == capacity: evict(tail) // drop LRU, O(1)12 insert new node at FRONT; map[key] ← node
state
- map{}
- opstart
- capacity0/2