Menu
CoddyTech

Baseball Game

FácilPilhapython iconjava iconcpp iconc iconjs icon+10

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

Escreva uma função chamada calPoints que retorna a soma das pontuações restantes no registro após a última operação. Um registro vazio tem 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 ainda registradas 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" somente 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 entra por último. O registro [4, -2, -4, 7] soma 5.

lock icon+13 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue retornar a soma sem somar o registro no final, de modo que cada operação, inclusive um cancelamento, leve O(1) tempo?

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

5