Menu
CoddyTech

Baseball Game

ŁatweStospython iconjava iconcpp iconc iconjs icon+10

Prowadzisz punktację w nietypowej grze. Lista operations jest odczytywana od lewej do prawej, a każdy wpis zmienia rejestr wyników. Liczba całkowita, taka jak "7" lub "-2", dodaje ten wynik do rejestru. "+" dodaje wynik równy sumie dwóch ostatnich wyników, "D" dodaje wynik równy dwukrotności ostatniego wyniku, a "C" na stałe usuwa ostatni wynik z rejestru.

Napisz funkcję o nazwie calPoints, która zwraca sumę wyników pozostających w rejestrze po ostatniej operacji. Suma pustego rejestru wynosi 0.

Funkcja

calPoints(operations: string-array) → integer
operationsstring-array
operacje w kolejności: liczby całkowite jako tekst lub "+", "D", "C"
Zwracainteger
suma wyników, które nadal są w zapisie na końcu

Ograniczenia

  • 1 ≤ operations.length ≤ 5000
  • Każdy wpis to "+", "D", "C" lub liczba całkowita zapisana w systemie dziesiętnym, dla której -3 × 104 ≤ value ≤ 3 × 104.
  • Każda operacja jest poprawna: "+" występuje tylko wtedy, gdy rekord zawiera co najmniej dwa wyniki, a "D" i "C" tylko wtedy, gdy zawiera co najmniej jeden.
  • Każdy wynik w rekordzie 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
Wynik rośnie do [4, -2], "D" dodaje -4, "+" dodaje -2 + -4 = -6, "C" usuwa to -6, a 7 trafia na koniec. Wynik [4, -2, -4, 7] daje sumę 5.

lock icon+13 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy możesz zwrócić sumę bez dodawania rekordu na końcu, tak aby każda operacja, w tym anulowanie, zajmowała O(1) czasu?

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

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

5