(key int)
| 69 | } |
| 70 | |
| 71 | func (cache *LRUCache) Get(key int) int { |
| 72 | node, ok := cache.keyMap[key] |
| 73 | if !ok { |
| 74 | return -1 |
| 75 | } |
| 76 | |
| 77 | // if node is at the front of the list or is the only node in the list |
| 78 | if cache.front == node || (node.prev == nil && node.next == nil) { |
| 79 | return node.value |
| 80 | } |
| 81 | |
| 82 | cache.bringNodeToFront(node) |
| 83 | return node.value |
| 84 | } |
| 85 | |
| 86 | func (cache *LRUCache) insertInFront(node *LRUNode) { |
| 87 | cache.front.prev = node |