Menu
CoddyTech

Baseball Game

FacileStackpython iconjava iconcpp iconc iconjs icon+10

Tieni il punteggio di un gioco insolito. L’elenco operations viene letto da sinistra a destra e ogni voce modifica un registro dei punteggi. Un numero intero come "7" o "-2" aggiunge quel punteggio al registro. "+" aggiunge un punteggio pari alla somma degli ultimi due punteggi, "D" aggiunge un punteggio pari al doppio dell’ultimo punteggio e "C" rimuove definitivamente l’ultimo punteggio dal registro.

Scrivi una funzione chiamata calPoints che restituisca la somma dei punteggi rimasti nel registro dopo l’ultima operazione. Un registro vuoto ha somma pari a 0.

Funzione

calPoints(operations: string-array) → integer
operationsstring-array
le operazioni in ordine: numeri interi come testo, oppure "+", "D", "C"
Restituisceinteger
la somma dei punteggi ancora registrati alla fine

Vincoli

  • 1 ≤ operations.length ≤ 5000
  • Ogni voce è "+", "D", "C" oppure un intero scritto in notazione decimale con -3 × 104 ≤ value ≤ 3 × 104.
  • Ogni operazione è valida: "+" si verifica solo quando il registro contiene almeno due punteggi, "D" e "C" solo quando ne contiene almeno uno.
  • Ogni punteggio nel record e la somma finale rientrano in un intero con segno a 32 bit.

Esempi

Input
operations = ["4", "-2", "D", "+", "C", "7"]
Output
5
Spiegazione
Il record cresce fino a [4, -2], "D" aggiunge -4, "+" aggiunge -2 + -4 = -6, "C" rimuove quel -6 e infine viene aggiunto 7. Il record [4, -2, -4, 7] ha come somma 5.

lock icon+13 test nascosti all’invio

challenge icon

Per approfondire

Riesci a restituire la somma senza sommare il record alla fine, in modo che ogni operazione, inclusa una cancellazione, richieda O(1) tempo?

Ripristina il codice
def calPoints(operations):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

5