這題應該見的不少了,寫寫記錄一下。
實作該功能分析:
(1) O(1) 時間完成查找,那除了 hash 别無選擇。
(2) LRU 最近最少使用算法,為了友善資料的淘汰。需要對最近通路的資料放未通路資料之前。
用雙向連結清單實作即可。(通常情況下,雙向連結清單讀取、插入的時間複雜度都是O(n), 但是如果知道插入位置,則可以實作O(1)實作。)
實作: hash存key對應的資料在雙向連結清單中的位置,就可以完成該功能。
具體代碼:
這題應該見的不少了,寫寫記錄一下。
實作該功能分析:
(1) O(1) 時間完成查找,那除了 hash 别無選擇。
(2) LRU 最近最少使用算法,為了友善資料的淘汰。需要對最近通路的資料放未通路資料之前。
用雙向連結清單實作即可。(通常情況下,雙向連結清單讀取、插入的時間複雜度都是O(n), 但是如果知道插入位置,則可以實作O(1)實作。)
實作: hash存key對應的資料在雙向連結清單中的位置,就可以完成該功能。
具體代碼: