閲覧済み
プログラミング
OpenAI
GPT-5 mini
VS
Google
Gemini 2.5 Flash-Lite
最も最近使用されていない(LRU)キャッシュを実装する
PythonでLRU(Least Recently Used)キャッシュデータ構造を実装してください。各操作は平均時間計算量O(1)で動作する必要があります:
1. `get(key)` — キャッシュにキーが存在すればそのキーに関連付けられた値を返します。存在しない場合は -1 を返します。キーにアクセスすると、そのキーは最近使用されたものとみなされます。
2. `put(key, value)` — キーと値のペアを挿入または更新します。キャパシティに達している場合は、新しい要素を挿入する前に最も最近使用されていない項目を削除します。
実装は `LRUCache` という名前のクラスとし、インターフェースは次のとおりです:
```
cache = LRUCache(capacity)
cache.put(key, value)
result = cache.get(key)
```
以下のテストシーケンスで実装を示してください:
```
cache = LRUCache(2)
cache.put(1, 10)
cache.put(2, 20)
print(cache.get(1)) # 期待: 10
cache.put(3, 30) # キー2を削除(追い出し)
print(cache.get(2)) # 期待: -1
cache.put(4, 40) # キー1を削除(追い出し)
print(cache.get(1)) # 期待: -1
print(cache.get(3)) # 期待: 30
print(cache.get(4)) # 期待: 40
```
要件:
- `functools.lru_cache` または `collections.OrderedDict` を使用してはならない。
- ハッシュマップと双方向連結リストの組み合わせを使用すること。
- アプローチを明確に説明するコメントを含めること。
- 容量が0または1の場合などのエッジケースを処理すること。
- 上記のテストシーケンスとその期待される出力を含む、完全に実行可能なコードを提供すること。