#!- * -エンコーディング= UTF-8 - * - から DoubleLinkedList インポートDoubleLinkedList、ノード クラスLRUcache(オブジェクト): デフ __init__ (自己容量): self.capacity = 容量 self.map = {} self.list = DoubleLinkedList(自己。容量) デフのget(自己、キー): もしキーでself.map: ノード = self.map.get(キー) self.list.remove(ノード) self.list.append_front(ノード) の戻りnode.value 他: リターン -1 DEFのPUT(セルフ、キー、値): #キーは、すでにキャッシュ内にある新しい値に更新する必要があり、リストヘッダ内のキーと値のペアの組み合わせ、およびマップに値を更新した場合IFキーでself.mapは: ノード = self.map.get(キー) self.list.remove(ノード) node.value = 値 self.list.append_front(ノード)#のキーがキャッシュにない他: ノード = ノード(キー、値) IF self.list.size> = self.capacity: #キャッシュフィル old_node = self.list.remove() #デフォルトの削除ノード末尾 デルself.map [old_node.key] self.list.append_front(ノード) self.map [キー] = ノード #self.list.size - #1 =動作のサイズを一覧表示する必要はありません。 他: self.list.append_front(ノード) self.map [キー] = ノード #self.list.size 1 =#+動作の大きリストアップする必要はありません。 DEF 印刷(セルフ): #プリントバッファの内容を self.list。印刷)( IF __name__ == ' __main__ ' : キャッシュ= LRUcache(2 ) cache.put( 1、1 ) キャッシュ。印刷() cache.put( 2、2 ) キャッシュ。印刷() cache.put( 3、3 ) キャッシュ。印刷() プリント(cache.get(1 )) キャッシュ。印刷() プリント(cache.get(2 )) のキャッシュ。印刷() プリント(cache.get(3 )) のキャッシュ。印刷()