ファーウェイODインタビューハンドティアリングコードの実際の質問[LRU実装]

手書きのLRU

        私は今でも leetcode に質問を書かせていますが、この質問は学校を出たばかりの学生に偏っていると感じます。一般に、数年間働いていると、LRU はそれが何であるかを忘れている可能性があります。

LRU(最も最近使用されていない)キャッシュ制約を満たすデータ構造を設計および実装してください。
LRUCache クラスを実装します。
LRUCache(int Capacity) LRU キャッシュを初期化する容量として正の整数を使用します。
int get(int key) キーがキャッシュに存在する場合はキーの値を返し、それ以外の場合は -1 を返します。
void put(int key, int value) キーワード キーが既に存在する場合は、そのデータ値の値を変更し、存在しない場合は、グループのキーと値をキャッシュに挿入します。挿入操作によりキーワードの数が Capacity を超える場合は、最も古い未使用のキーワードを削除する必要があります。
get 関数と put 関数は、平均時間計算量 O(1) で実行する必要があります。

        leetcodeの元の質問

        まず、LRU アルゴリズムについて簡単に説明します。面接でこの質問をされてわからない場合は、質問を変えるか、面接官にヒントを求めるのが最善です。黙ってそうすれば、結局誰もあなたを同情しません。        

        LRU アルゴリズムはキャッシュ削除戦略です。原理は難しくありませんが、インタビューでバグのないアルゴリズムを記述する方がスキルが高くなります。データ構造を層ごとに抽象化して逆アセンブルする必要があります。この記事では、美しいコード。

おすすめ

転載: blog.csdn.net/misayaaaaa/article/details/131161720