Implement LFU using LRU
๐ Core Idea LFU (Least Frequently Used) means: Remove the least frequently used key If multiple keys have same frequency โ remove least recently used (LRU) ๐ฆ Data Structures Used We maintain: key...

Source: DEV Community
๐ Core Idea LFU (Least Frequently Used) means: Remove the least frequently used key If multiple keys have same frequency โ remove least recently used (LRU) ๐ฆ Data Structures Used We maintain: key โ node (for O(1) access) freq โ doubly linked list (group nodes by frequency) minFreq (track minimum frequency in cache) ๐งฑ Structure Visualization Freq = 1 โ [ most recent .... least recent ] Freq = 2 โ [ most recent .... least recent ] Freq = 3 โ [ most recent .... least recent ] Each frequency has its own LRU list ๐ Example Walkthrough Capacity = 2 Step 1: put(1,10) Freq 1: [1] minFreq = 1 Step 2: put(2,20) Freq 1: 2, 1 minFreq = 1 Step 3: get(1) Access key 1 Increase its frequency: 1 โ 2 Freq 1: [2] Freq 2: [1] minFreq = 1 ๐ We removed 1 from freq 1 and added to freq 2 Step 4: put(3,30) Cache is FULL โ eviction needed minFreq = 1 Look at Freq 1 โ [2] ๐ Remove 2 After insertion: Freq 1: [3] Freq 2: [1] minFreq = 1 Step 5: get(3) Move 3 from freq 1 โ freq 2 Freq 1: [] Freq 2: [3, 1] min