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.

lock icon+13 скрытых тестов при отправке

challenge icon

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

Можешь возвращать сумму, не прибавляя запись в конце, чтобы каждая операция, включая отмену, занимала O(1) времени?

Сбросить код
def calPoints(operations):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

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

Ожидается

5