Menu
CoddyTech
flag Ar iconالعربيةdown icon

Min Stack

متوسطالمكدسpython iconjava iconcpp iconc iconjs icon+10

صمّم مكدّسًا يمكنه، بالإضافة إلى العمليات المعتادة push وpop وtop، الإبلاغ عن أصغر قيمة يحتوي عليها باستخدام getMin. يجب أن تُنفَّذ كل واحدة من العمليات الأربع في زمن O(1).

تُعطى لك العمليات بالترتيب ضمن ops، وتحتوي args[i] على القيمة لعملية push وعلى 0 لكل عملية أخرى. نفّذها على مكدّس واحد يبدأ فارغًا، وأعِد سلسلة نصية واحدة لكل عملية: "null" لعمليتي push وpop، والعدد كنص لعمليتي top وgetMin.

الدالة

minStackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
العمليات، حسب ترتيب تنفيذها
argsinteger-array
القيمة لكل عملية push، و0 لكل عملية أخرى
تُرجعstring-array
إجابة واحدة لكل عملية، كنص

القيود

  • 1 ≤ ops.length ≤ 3000
  • args.length == ops.length
  • كلّ عنصر من ops[i] هو push أو pop أو top أو getMin.
  • -231+1 ≤ args[i] ≤ 231-1 لعملية دفع، وargs[i] == 0 لأي عملية أخرى.
  • pop وtop وgetMin لا تُستدعى إلا عندما يحتوي المكدس على قيمة واحدة على الأقل.

أمثلة

المدخلات
ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]args = [4, 1, 7, 0, 0, 0, 0, 0]
المخرجات
["null", "null", "null", "1", "null", "1", "null", "4"]
الشرح
يحتوي المكدس، من الأسفل إلى الأعلى، على 4 و1 و7، لذا فإن أصغرها هو 1. يؤدي إخراج 7 إلى بقاء 1 في الأعلى. ويؤدي إخراج 1 أيضًا إلى بقاء 4 فقط، لذا يعود الحد الأدنى إلى 4.

lock icon+16 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

هل يمكنك إنشاء طابور يعمل بمبدأ «الوارد أولًا يصرف أولًا» ويُبلّغ أيضًا عن قيمته الدنيا في زمن O(1) مُطفأ؟

إعادة ضبط الشيفرة
def minStackOps(ops, args):
    # اكتب الكود هنا
حالات الاختبار

الحالة 1

الحالة 2

الحالة 3

المدخلات

ops = ["push", "push", "push", "getMin", "pop", "top", "pop", "getMin"]
args = [4, 1, 7, 0, 0, 0, 0, 0]

المتوقع

["null", "null", "null", "1", "null", "1", "null", "4"]