Menu
CoddyTech

Baseball Game

Bạn ghi điểm cho một trò chơi khác thường. Đọc operations từ trái sang phải; mỗi mục sẽ thay đổi bảng điểm. Một số nguyên như "7" hoặc "-2" sẽ thêm số điểm đó. "+" thêm tổng của hai điểm mới nhất, "D" thêm gấp đôi điểm mới nhất, còn "C" xóa hẳn điểm mới nhất.

Viết hàm có tên calPoints để trả về tổng điểm còn lại trên bảng sau thao tác cuối cùng. Bảng điểm trống có tổng bằng 0.

Hàm

calPoints(operations: string-array) → integer
operationsstring-array
các phép toán theo thứ tự: số nguyên dưới dạng văn bản hoặc "+", "D", "C"
Trả vềinteger
tổng điểm vẫn còn được ghi nhận vào cuối

Ràng buộc

  • 1 ≤ operations.length ≤ 5000
  • Mỗi mục là "+", "D", "C" hoặc một số nguyên viết ở dạng thập phân, thỏa mãn -3 × 104 ≤ value ≤ 3 × 104.
  • Mọi phép toán đều hợp lệ: "+" chỉ xuất hiện khi bản ghi có ít nhất hai điểm, "D" và "C" chỉ xuất hiện khi bản ghi có ít nhất một điểm.
  • Mọi điểm số trong bản ghi và tổng cuối cùng đều nằm trong phạm vi số nguyên có dấu 32 bit.

Ví dụ

Đầu vào
operations = ["4", "-2", "D", "+", "C", "7"]
Đầu ra
5
Giải thích
Bản ghi trở thành [4, -2], "D" thêm -4, "+" thêm -2 + -4 = -6, "C" xóa -6 đó, và 7 được thêm vào cuối. Bản ghi [4, -2, -4, 7] có tổng bằng 5.
challenge icon

Câu hỏi mở rộng

Bạn sẽ thêm thao tác hoàn tác lệnh "C" gần nhất như thế nào, để khôi phục điểm đã bị hủy trong thời gian O(1)?

Đặt lại code
def calPoints(operations):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

5