มีรายการอัปเดตคะแนน 4 ประเภท: ตัวเลข (คะแนนรอบ), "+" (ผลรวม 2 รอบล่าสุด), "D" (สองเท่ารอบล่าสุด), "C" (ยกเลิกรอบล่าสุด) ใช้ stack จัดการ คืนผลรวมคะแนนทั้งหมด
ตัวอย่าง
["5","2","C","D","+"] → รอบ1:5, รอบ2:2, C:ลบ2, D:2×5=10, +:5+10=15 → ผลรวม 30
ขั้นตอนการแก้ปัญหา
stack = []- วนแต่ละ
op:"+": pushstack[-1] + stack[-2]"D": pushstack[-1] * 2"C": pop- ตัวเลข: push
int(op)
- คืน
sum(stack)
การติดตั้งใน Python
class Solution:
def calPoints(self, ops):
stack = []
for op in ops:
if op == "+":
stack.append(stack[-1] + stack[-2])
elif op == "D":
stack.append(stack[-1] * 2)
elif op == "C":
stack.pop()
else:
stack.append(int(op))
return sum(stack)
ob = Solution()
print(ob.calPoints(["5","2","C","D","+"])) # 30
อินพุต / เอาต์พุต
Input: ["5","2","C","D","+"] Output: 30