File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , k , v ):
3+ self .key = k
4+ self .value = v
5+ self .next = None
6+ self .prev = None
7+
8+
9+ class LRU_cache :
10+ def __init__ (self , capacity ):
11+ self .capacity = capacity
12+ self .dic = dict ()
13+
14+ self .head = Node (0 , 0 )
15+ self .tail = Node (0 , 0 )
16+ self .head .next = self .tail
17+ self .tail .prev = self .head
18+
19+
20+
21+ def _add (self , node ):
22+ p = self .tail .prev
23+ p .next = node
24+ self .tail .prev = node
25+ node .next = self .tail
26+ node .prev = p
27+
28+
29+ def _remove (self , node ):
30+ p = node .prev
31+ n = node .next
32+ p .next = n
33+ n .prev = p
34+
35+
36+
37+ def get (self , key ):
38+ if key in self .dic :
39+ n = self .dic [key ]
40+ self ._remove (n )
41+ self ._add (n )
42+ return n .value
43+ return - 1
44+
45+ def set (self , key , value ):
46+ n = Node (key , value )
47+ self ._add (n )
48+ self .dic [key ] = n
49+ if len (self .dic ) > self .capacity :
50+ n = self .head .next
51+ self ._remove (n )
52+ del self .dic [n .key ]
53+
54+
55+ cache = LRU_cache (3 )
56+
57+ cache .set ('a' , 'apple' )
58+ cache .set ('b' , 'ball' )
59+ cache .set ('c' , 'cat' )
60+ cache .set ('d' , 'dog' )
61+ print (cache .get ('a' ))
62+ print (cache .get ('c' ))
You can’t perform that action at this time.
0 commit comments