Menu
CoddyTech

Baseball Game

FácilPilhapython iconjava iconcpp iconc iconjs icon+10

Você mantém a pontuação de um jogo incomum. Leia operations da esquerda para a direita; cada entrada altera um registro de pontuações. Um número inteiro como "7" ou "-2" adiciona essa pontuação. "+" adiciona a soma das duas pontuações mais recentes, "D" adiciona o dobro da pontuação mais recente, e "C" remove definitivamente a pontuação mais recente.

Escreva uma função chamada calPoints que retorne a soma das pontuações que restarem no registro após a última operação. Um registro vazio soma 0.

Função

calPoints(operations: string-array) → integer
operationsstring-array
as operações em ordem: inteiros como texto, ou "+", "D", "C"
Retornainteger
a soma das pontuações que ainda estão no registro ao final

Restrições

  • 1 ≤ operations.length ≤ 5000
  • Cada entrada é "+", "D", "C" ou um número inteiro escrito em decimal com -3 × 104 ≤ value ≤ 3 × 104.
  • Todas as operações são válidas: "+" só aparece quando o registro contém pelo menos duas pontuações, "D" e "C" só quando contém pelo menos uma.
  • Cada pontuação no registro e a soma final cabem em um inteiro com sinal de 32 bits.

Exemplos

Entrada
operations = ["4", "-2", "D", "+", "C", "7"]
Saída
5
Explicação
O registro cresce para [4, -2], "D" adiciona -4, "+" adiciona -2 + -4 = -6, "C" remove esse -6, e 7 é adicionado por último. A soma do registro [4, -2, -4, 7] é 5.
challenge icon

Para ir além

Como você adicionaria uma operação que desfaz o "C" mais recente, colocando a pontuação cancelada de volta, em tempo O(1)?

Redefinir código
def calPoints(operations):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

5