150強訪談簡單

LRU緩存

“LRU 快取”問題的詳細指南和 Python 實作。

問題陳述

簡單

設計一個遵循最近最少使用 (LRU) 快取約束的資料結構。

實作LRUCache類別:

- LRUCache(capacity: int) - 使用正大小的容量初始化 LRU 快取。

- get(key: int) -> int - 如果鍵存在則傳回鍵的值,否則傳回-1。

- put(key: int, 值: int) -> None - 如果鍵存在則更新鍵的值。否則,將鍵值對新增至快取。如果密鑰數量超過容量,則逐出最近最少使用的密鑰。

get 和 put 函數必須以 O(1) 平均時間複雜度運行。

輸入是操作列表和參數列表。實作一個傳回結果清單的函數 lruCache(operations: list, arguments: list) -> list (對於建構子和 put 是 None)。

約束條件
  • 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?
考慮使用特定於連結清單的資料結構,例如集合或堆。
Edge Cases to Watch
  • 空輸入結構
  • 單元素輸入
  • 大數值範圍

準備好解決了嗎?

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 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。