Menu
CoddyTech

Baseball Game

ЛегкоСтекpython iconjava iconcpp iconc iconjs icon+10

Ты ведёшь счёт в необычной игре. Читай operations слева направо; каждая запись меняет список очков. Целое число, например "7" или "-2", добавляет это количество очков. "+" добавляет сумму двух последних очков, "D" добавляет удвоенное последнее количество очков, а "C" навсегда удаляет последние очки.

Напиши функцию с именем calPoints, которая возвращает сумму очков, оставшихся в списке после последней операции. Сумма пустого списка равна 0.

Функция

calPoints(operations: string-array) → integer
operationsstring-array
операции по порядку: целые числа в виде текста или "+", "D", "C"
Возвращаетinteger
сумма баллов, которые остаются в записи на конец

Ограничения

  • 1 ≤ operations.length ≤ 5000
  • Каждая запись — это "+", "D", "C" или целое число, записанное в десятичной системе, где -3 × 104 ≤ value ≤ 3 × 104.
  • Каждая операция допустима: "+" встречается только тогда, когда в записи есть как минимум две оценки, а "D" и "C" — только когда в ней есть как минимум одна.
  • Каждый балл в записи и итоговая сумма помещаются в 32-битное целое число со знаком.

Примеры

Ввод
operations = ["4", "-2", "D", "+", "C", "7"]
Вывод
5
Пояснение
Список увеличивается до [4, -2], "D" добавляет -4, "+" добавляет -2 + -4 = -6, "C" удаляет это -6, а 7 добавляется последним. Сумма списка [4, -2, -4, 7] равна 5.
challenge icon

Дополнительный вопрос

Как добавить операцию, которая отменяет последнее "C", восстанавливая отменённый результат, за время O(1)?

Сбросить код
def calPoints(operations):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

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

Ожидаемый вывод

5