Menu
CoddyTech

Baseball Game

ŁatweStospython iconjava iconcpp iconc iconjs icon+10

Prowadzisz punktację w nietypowej grze. Czytaj operations od lewej do prawej; każdy wpis zmienia zapis wyników. Liczba całkowita, taka jak "7" lub "-2", dodaje ten wynik. "+" dodaje sumę dwóch ostatnich wyników, "D" dodaje dwukrotność ostatniego wyniku, a "C" trwale usuwa ostatni wynik.

Napisz funkcję o nazwie calPoints, która zwraca sumę wyników pozostałych w zapisie po ostatniej operacji. Suma pustego zapisu wynosi 0.

Funkcja

calPoints(operations: string-array) → integer
operationsstring-array
operacje w kolejności: liczby całkowite zapisane jako tekst lub „+”, „D”, „C”
Zwracainteger
suma punktów nadal zapisanych w rejestrze na koniec

Ograniczenia

  • 1 ≤ operations.length ≤ 5000
  • Każdy wpis to "+", "D", "C" albo liczba całkowita zapisana w systemie dziesiętnym, dla której -3 × 104 ≤ value ≤ 3 × 104.
  • Każda operacja jest prawidłowa: "+" pojawia się tylko wtedy, gdy rekord zawiera co najmniej dwa wyniki, a "D" i "C" tylko wtedy, gdy zawiera co najmniej jeden.
  • Każdy wynik w zapisie oraz suma końcowa mieszczą się w 32-bitowej liczbie całkowitej ze znakiem.

Przykłady

Wejście
operations = ["4", "-2", "D", "+", "C", "7"]
Wyjście
5
Wyjaśnienie
Lista powiększa się do [4, -2], "D" dodaje -4, "+" dodaje -2 + -4 = -6, "C" usuwa tę wartość -6, a na końcu trafia 7. Suma listy [4, -2, -4, 7] wynosi 5.
challenge icon

Pytanie dodatkowe

Jak dodać operację, która cofa ostatnie "C" i przywraca anulowany wynik w czasie O(1)?

Zresetuj kod
def calPoints(operations):
    # Napisz tutaj kod

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

5