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.

lock icon+13 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

האם תוכל להחזיר את הסכום בלי לחבר את הרשומה בסוף, כך שכל פעולה, כולל ביטול, תימשך O(1) זמן?

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

מקרה 1

מקרה 2

מקרה 3

קלט

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

צפוי

5