Problem statement

https://leetcode.com/problems/baseball-game/

Solution

Not very clear what to do, but when you realize it is quite easy. Just do what is asked, using stack: if we have +, we need to add sum of two last elements into stack. If we have C, we remove last element. If we have D, we add doubled last element. If we have number, we just append it.

Complexity

Time and space complexity is O(n).

Code

class Solution:
    def calPoints(self, ops):
        stack = []
        for op in ops:
            if op == '+':
                stack.append(stack[-1] + stack[-2])
            elif op == 'C':
                stack.pop()
            elif op == 'D':
                stack.append(2 * stack[-1])
            else:
                stack.append(int(op))

        return sum(stack)