Public classLRUCache {HashMap<integer, listnode> map =NewHashmap<integer, listnode>(); ListNode start; ListNode end; intcapacity; intcur_size; PublicLRUCache (intcapacity) { This. Capacity =capacity; Cur_size= 0; Start=NewListNode (0); End=NewListNode (0); Start.next=end; End.pre=start; } Public intGetintkey) { if(!Map.containskey (Key)) { return-1; } listnode Node=Map.get (key); Delete (node); Insert (node); returnNode.val; } Public voidSetintKeyintvalue) { if(Map.containskey (key)) {get (key); Map.get (Key). Val=value; return; } if(Cur_size <capacity) {Cur_size++; } Else{map.remove (Start.next.key); Start.next=Start.next.next; Start.next.pre=start; } listnode Node=NewListNode (value); Node.key=key; Map.put (key, node); Insert (node); } Private voidDelete (ListNode node) {Node.pre.next=Node.next; Node.next.pre=Node.pre; } Private voidInsert (ListNode node) {End.pre.next=node; Node.pre=End.pre; Node.next=end; End.pre=node; } classListNode {intVal; intkey; ListNode Pre; ListNode Next; ListNode (intval) { This. val =Val; } }}
[Leetcode] LRU Cache