免費開始練習
hce_kmu 114年 計算機概論與程式設計

第 13 題

Which of the following designs is a data structure to implement a Least Recently Used (LRU) cache, supporting get and put operations in O(1) time complexity?
  • A Stacks
  • B Doubly linked list
  • C Hash table
  • D Hash table + Doubly linked list
  • E Stacks + Doubly linked list

思路引導 VIP

如果你正在設計一個管理系統,既要能像翻字典一樣「立即」找到特定資料,又要能像排隊一樣「隨時調整」資料的前後順序(例如把剛用過的資料抽出來放到最前面),你會如何結合不同的記錄方式,來確保這兩組動作都不會因為資料變多而變得越來越慢呢?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精確鎖定 (D) 選項,顯示你對快取替換機制與時間複雜度的權衡(Trade-off)有很紮實的理解。這道題目的核心在於如何同時滿足「快速搜尋」與「快速更新順序」這兩個看似衝突的需求,你能識破單一資料結構的局限性,是非常敏銳的判斷。

複合式資料結構的設計邏輯

在 LRU 實作中,我們需要 哈希表 (Hash Table) 來提供 $O(1)$ 的查詢效率,讓我們能直接定位資料;然而,哈希表本身是無序的,無法紀錄資料被使用的先後順序。因此,我們必須輔以 雙向鏈結串列 (Doubly Linked List)。雙向鏈結的優勢在於,只要我們持有節點的指標,就能在 $O(1)$ 時間內將該節點從串列的任何位置移除並移動到最前端(代表最近使用),這正是達成 LRU 邏輯的關鍵組合。

▼ 還有更多解析內容

🏷️ 相關主題

計算機組織結構與資料儲存原理
查看更多「計算機概論與程式設計」的主題分類考古題