Menu
CoddyTech

Baseball Game

אתם מנהלים ניקוד במשחק יוצא דופן. קראו את operations משמאל לימין; כל ערך משנה את רישום הניקוד. מספר שלם כמו "7" או "-2" מוסיף את הניקוד הזה. "+" מוסיף את סכום שני הניקודים האחרונים, "D" מוסיף פי שניים מהניקוד האחרון, ו-"C" מסיר את הניקוד האחרון לצמיתות.

כתבו פונקציה בשם calPoints שמחזירה את סכום הניקודים שנותרו ברישום לאחר הפעולה האחרונה. סכום של רישום ריק הוא 0.

פונקציה

calPoints(operations: string-array) → integer
operationsstring-array
הפעולות לפי הסדר: מספרים שלמים כטקסט, או "+", "D", "C"
מחזירהinteger
סכום הנקודות שעדיין רשומות בסוף

אילוצים

  • 1 ≤ operations.length ≤ 5000
  • כל ערך הוא "+",‏ "D",‏ "C", או מספר שלם הכתוב בשיטה העשרונית, כך ש־-3 × 104 ≤ value ≤ 3 × 104.
  • כל פעולה תקפה: "+" מופיע רק כאשר הרשומה מכילה לפחות שתי תוצאות, ו-"D" ו-"C" רק כאשר היא מכילה לפחות תוצאה אחת.
  • כל ניקוד ברשומה והסכום הסופי נכנסים למספר שלם חתום בן 32 סיביות.

דוגמאות

קלט
operations = ["4", "-2", "D", "+", "C", "7"]
פלט
5
הסבר
הרשומה גדלה ל־[4, -2],‏ "D" מוסיף -4,‏ "+" מוסיף -2 + -4 = -6,‏ "C" מסיר את -6, ו־7 נוסף אחרון. סכום הרשומה [4, -2, -4, 7] הוא 5.
challenge icon

שאלת המשך

איך היית מוסיף פעולה שמבטלת את "C" האחרון, ומחזירה את הניקוד שבוטל, בזמן O(1)?

איפוס הקוד
def calPoints(operations):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

operations = ["4", "-2", "D", "+", "C", "7"]

הפלט הצפוי

5