Top 150 Interview簡単

LRUキャッシュ ---パイセップ--- 「LRU キャッシュ」問題の詳細なガイドと __PYTERM_0__ 実装。 ---パイセップ--- 最も最近使用されていない (LRU) キャッシュの制約に従うデータ構造を設計します。 LRUCache クラスを実装します。 - LRUCache(capacity: int) - LRU キャッシュを正のサイズの容量で初期化します。 - get(key: int) -> int - キーが存在する場合はキーの値を返し、存在しない場合は -1 を返します。 - put(key: int, value: int) -> None - キーが存在する場合は、キーの値を更新します。それ以外の場合は、キーと値のペアをキャッシュに追加します。キーの数が容量を超える場合は、最も最近使用されていないキーを削除します。 get 関数と put 関数は、それぞれ O(1) の平均時間計算量で実行する必要があります。 入力は操作のリストと引数のリストです。結果のリストを返す関数 __PYCODE_0__ を実装します (コンストラクターと put の場合はなし)。 ---パイセップ--- トップ150インタビュー ---パイセップ--- リンクされたリスト ---パイセップ--- 「LRU キャッシュ」問題は、リンク リスト セクションの重要な課題です。 ---パイセップ--- この実装は、__PYTERM_0__ の簡単なレベルのロジックに焦点を当てています。 ---パイセップ--- 当社は、提供するソリューションにおいて技術的な正確さとコードの読みやすさを優先します。 ---パイセップ--- アルゴリズム工学 ---パイセップ--- 競技プログラミング ---パイセップ--- 技術的評価 ---パイセップ--- LRU キャッシュのロジック フローを視覚化します。 ---パイセップ--- LRU キャッシュの問題ステートメントを注意深く読んでください。 ---パイセップ--- 単純な反復ソリューションの草案を作成します。 ---パイセップ--- 冗長な計算を探します。 ---パイセップ--- プロセスを高速化するには、ハッシュまたはソートを使用します。 ---パイセップ--- 実稼働標準に合わせてコードをクリーンアップします。 ---パイセップ--- 空の入力構造体 ---パイセップ--- 単一要素入力 ---パイセップ--- 大きな数値限界 ---パイセップ--- リンク リスト アプローチのロジックを説明してください。 ---パイセップ--- null または空の入力などの特殊なケースについて説明します。 ---パイセップ--- 標準のリンク リストの問題プロパティが適用されます。 ---パイセップ--- セットやヒープなどのリンク リスト固有のデータ構造の使用を検討してください。 ---パイセップ--- K 個のソートされたリストを結合する ---パイセップ--- 「K 個のソートされたリストのマージ」問題の詳細なガイドと __PYTERM_0__ 実装。 ---パイセップ--- k 個のリンク リストの配列が与えられ、各リンク リストは昇順に並べ替えられます。 すべてのリンク リストを 1 つの並べ替えられたリンク リストにマージし、それを返します。 リンクされたリストは、__PYTERM_1__ リストのリストとして表されます。マージされたソートされたリストを返す関数 __PYCODE_0__ を実装します。 ---パイセップ--- トップ150インタビュー ---パイセップ--- リンクされたリスト ---パイセップ--- 「K 個のソートされたリストをマージする」問題は、リンク リスト セクションの重要な課題です。 ---パイセップ--- この実装は、__PYTERM_0__ の簡単なレベルのロジックに焦点を当てています。 ---パイセップ--- 当社は、提供するソリューションにおいて技術的な正確さとコードの読みやすさを優先します。 ---パイセップ--- アルゴリズム工学 ---パイセップ--- 競技プログラミング ---パイセップ--- 技術的評価 ---パイセップ--- K ソート リストをマージするためのロジック フローを視覚化します。 ---パイセップ--- Merge K Sorted Lists の問題文を注意深く読んでください。 ---パイセップ--- 単純な反復ソリューションの草案を作成します。 ---パイセップ--- 冗長な計算を探します。 ---パイセップ--- プロセスを高速化するには、ハッシュまたはソートを使用します。

Detailed guide and Python implementation for the 'LRU Cache' problem.

問題提起

簡単

Design a data structure that follows the constraints of a Least Recently Used (LRU) cache.

Implement the LRUCache class:

- LRUCache(capacity: int) - Initialize the LRU cache with positive size capacity.

- get(key: int) -> int - Return the value of the key if the key exists, otherwise return -1.

- put(key: int, value: int) -> None - Update the value of the key if the key exists. Otherwise, add the key-value pair to the cache. If the number of keys exceeds the capacity, evict the least recently used key.

The get and put functions must each run in O(1) average time complexity.

Input is a list of operations and a list of arguments. Implement a function lruCache(operations: list, arguments: list) -> list that returns a list of results (None for constructor and put).

制約
  • 1 <= capacity <= 3000
  • 0 <= key <= 10000
  • 0 <= value <= 100000
  • At most 200000 calls will be made to get and put

Example 1
Input
["LRUCache","put","put","get","put","get","put","get","get","get"], [[2],[1,1],[2,2],[1],[3,3],[2],[4,4],[1],[3],[4]]
Output
[None,None,None,1,None,-1,None,-1,3,4]
Explanation

Cache capacity is 2. put(1,1), put(2,2), get(1) returns 1. put(3,3) evicts key 2. get(2) returns -1 (evicted). put(4,4) evicts key 1. get(1) returns -1, get(3) returns 3, get(4) returns 4.

Need a Hint?
Consider using Linked List-specific data structures like sets or heaps.
Edge Cases to Watch
  • Empty input structures
  • Single element inputs
  • Large numerical bounds

解決する準備はできましたか?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

エディタで開く
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。