Menu
CoddyTech

Baseball Game

FacilePilepython iconjava iconcpp iconc iconjs icon+10

Tu tiens le score d’un jeu inhabituel. La liste operations est lue de gauche à droite, et chaque entrée modifie un relevé des scores. Un entier tel que "7" ou "-2" ajoute ce score au relevé. "+" ajoute un score égal à la somme des deux derniers scores, "D" ajoute un score égal au double du dernier score, et "C" supprime définitivement le dernier score du relevé.

Écris une fonction nommée calPoints qui renvoie la somme des scores restants sur le relevé après la dernière opération. Un relevé vide a une somme de 0.

Fonction

calPoints(operations: string-array) → integer
operationsstring-array
les opérations dans l'ordre : des entiers sous forme de texte, ou "+", "D", "C"
Renvoieinteger
la somme des scores encore inscrits au registre à la fin

Contraintes

  • 1 ≤ operations.length ≤ 5000
  • Chaque entrée est "+", "D", "C", ou un entier écrit en décimal tel que -3 × 104 ≤ value ≤ 3 × 104.
  • Chaque opération est valide : "+" n’apparaît que lorsque l’enregistrement contient au moins deux scores, "D" et "C" seulement lorsqu’il en contient au moins un.
  • Chaque score de l'enregistrement ainsi que la somme finale tiennent dans un entier signé de 32 bits.

Exemples

Entrée
operations = ["4", "-2", "D", "+", "C", "7"]
Sortie
5
Explication
Le relevé s’agrandit pour atteindre [4, -2], "D" ajoute -4, "+" ajoute -2 + -4 = -6, "C" supprime ce -6, et 7 est ajouté en dernier. La somme du relevé [4, -2, -4, 7] est égale à 5.

lock icon+13 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu renvoyer la somme sans additionner l'enregistrement à la fin, afin que chaque opération, y compris une annulation, prenne un temps O(1) ?

Réinitialiser le code
def calPoints(operations):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

5