اكتب كلاس باسم 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

الناتج (Console)

سيظهر ناتج تنفيذ الكود هنا.