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

Implement Queue Using Stacks

أنشئ طابورًا يعمل بمبدأ الوارد أولًا يصرف أولًا، ولا يستخدم للتخزين سوى مكدسين. لا يمكن للمكدس إلا إضافة عنصر إلى أعلاه، وإزالة العنصر العلوي، وقراءة العنصر العلوي، والتحقق مما إذا كان فارغًا. يدعم الطابور العمليات push x (إضافة x إلى الخلف)، وpop (إزالة العنصر الأمامي وإرجاعه)، وpeek (إرجاع العنصر الأمامي)، وempty (هل الطابور فارغ؟).

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

الدالة

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

القيود

  • 1 ≤ ops.length ≤ 2000
  • args.length == ops.length
  • كل عنصر من ops[i] هو push أو pop أو peek أو empty.
  • -109 ≤ args[i] ≤ 109 عند إجراء عملية دفع، وargs[i] == 0 لأي عملية أخرى.
  • يُستدعى pop وpeek فقط عندما يحتوي الطابور على عنصر واحد على الأقل.

أمثلة

المدخلات
ops = ["push", "push", "peek", "pop", "empty"]args = [1, 2, 0, 0, 0]
المخرجات
["null", "null", "1", "1", "false"]
الشرح
بعد إضافة 1 ثم 2، يكون العنصر الأول هو 1، لذا تُرجع كل من peek وpop القيمة "1". لا يزال 2 في الداخل، لذا تُرجع empty القيمة "false".

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

challenge icon

سؤال إضافي

كيف ستضيف عملية back تُرجع أحدث عنصر بزمن O(1)، من دون الإخلال بالحدّ المُستهلك للعمليات الأخرى؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

ops = ["push", "push", "peek", "pop", "empty"]
args = [1, 2, 0, 0, 0]

المتوقع

["null", "null", "1", "1", "false"]