اكتب كلاس باسم LRUCache يُنفذ نظام ذاكرة تخزين مؤقت بخاصية "الأقل استخدامًا حديثًا يُحذف أولًا" (Least Recently Used).
المطلوب:
- الكلاس يأخذ في البناء
capacity(سعة الذاكرة القصوى) - يجب تطبيق دالتين:
get(key): تُرجع القيمة المرتبطة بالمفتاح، أو-1إذا لم يكن موجودًاput(key, value): تُضيف أو تُحدّث قيمة المفتاح
- عند الوصول للسعة القصوى، يجب حذف العنصر الأقل استخدامًا حديثًا
- القراءة والكتابة يجب أن تكونا في زمن O(1)
- الوصول لعنصر (قراءة أو كتابة) يجعله "الأحدث استخدامًا"
مثال:
cache = LRUCache(2)
cache.put(1, 1)
cache.put(2, 2)
cache.get(1) # 1
cache.put(3, 3) # يحذف المفتاح 2 (الأقل استخدامًا)
cache.get(2) # -1 (غير موجود)
cache.put(4, 4) # يحذف المفتاح 1
cache.get(1) # -1
cache.get(3) # 3
cache.get(4) # 4
ملاحظات:
- استخدم قاموس مع قائمة مرتبطة للحصول على O(1)
- يمكنك استخدام
OrderedDictمن مكتبةcollections