Menu
CoddyTech

Min Stack

בינונימחסניתpython iconjava iconcpp iconc iconjs icon+10

תכנן מחסנית שבנוסף לפעולות הרגילות push, pop ו-top, יכולה לדווח על הערך הקטן ביותר שהיא מכילה באמצעות getMin. כל אחת מארבע הפעולות חייבת לפעול בזמן O(1).

הפעולות ניתנות לך לפי הסדר בתוך ops, כאשר args[i] מכיל את הערך עבור פעולת דחיפה, ו-0 עבור כל פעולה אחרת. בצע אותן על מחסנית אחת שמתחילה ריקה והחזר מחרוזת אחת לכל פעולה: "null" עבור push ו-pop, ואת המספר כטקסט עבור top ו-getMin.

פונקציה

minStackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
הפעולות, לפי סדר ביצוען
argsinteger-array
הערך עבור כל פעולת דחיפה, ו־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"]