682. Baseball Game LeetCode Solution
In this guide, you will get 682. Baseball Game LeetCode Solution with the best time and space complexity. The solution to Baseball Game problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Baseball Game solution in C++
- Baseball Game solution in Java
- Baseball Game solution in Python
- Additional Resources

Problem Statement of Baseball Game
You are keeping the scores for a baseball game with strange rules. At the beginning of the game, you start with an empty record.
You are given a list of strings operations, where operations[i] is the ith operation you must apply to the record and is one of the following:
An integer x.
Record a new score of x.
‘+’.
Record a new score that is the sum of the previous two scores.
‘D’.
Record a new score that is the double of the previous score.
‘C’.
Invalidate the previous score, removing it from the record.
Return the sum of all the scores on the record after applying all the operations.
The test cases are generated such that the answer and all intermediate calculations fit in a 32-bit integer and that all operations are valid.
Example 1:
Input: ops = [“5″,”2″,”C”,”D”,”+”]
Output: 30
Explanation:
“5” – Add 5 to the record, record is now [5].
“2” – Add 2 to the record, record is now [5, 2].
“C” – Invalidate and remove the previous score, record is now [5].
“D” – Add 2 * 5 = 10 to the record, record is now [5, 10].
“+” – Add 5 + 10 = 15 to the record, record is now [5, 10, 15].
The total sum is 5 + 10 + 15 = 30.
Example 2:
Input: ops = [“5″,”-2″,”4″,”C”,”D”,”9″,”+”,”+”]
Output: 27
Explanation:
“5” – Add 5 to the record, record is now [5].
“-2” – Add -2 to the record, record is now [5, -2].
“4” – Add 4 to the record, record is now [5, -2, 4].
“C” – Invalidate and remove the previous score, record is now [5, -2].
“D” – Add 2 * -2 = -4 to the record, record is now [5, -2, -4].
“9” – Add 9 to the record, record is now [5, -2, -4, 9].
“+” – Add -4 + 9 = 5 to the record, record is now [5, -2, -4, 9, 5].
“+” – Add 9 + 5 = 14 to the record, record is now [5, -2, -4, 9, 5, 14].
The total sum is 5 + -2 + -4 + 9 + 5 + 14 = 27.
Example 3:
Input: ops = [“1″,”C”]
Output: 0
Explanation:
“1” – Add 1 to the record, record is now [1].
“C” – Invalidate and remove the previous score, record is now [].
Since the record is empty, the total sum is 0.
Constraints:
1 <= operations.length <= 1000
operations[i] is "C", "D", "+", or a string representing an integer in the range [-3 * 104, 3 * 104].
For operation "+", there will always be at least two previous scores on the record.
For operations "C" and "D", there will always be at least one previous score on the record.
Complexity Analysis
- Time Complexity: O(n)
- Space Complexity: O(n)
682. Baseball Game LeetCode Solution in C++
class Solution {
public:
int calPoints(vector<string>& operations) {
vector<int> scores;
for (const string& operation : operations)
if (operation == "+")
scores.push_back(scores.back() + scores[scores.size() - 2]);
else if (operation == "D")
scores.push_back(scores.back() * 2);
else if (operation == "C")
scores.pop_back();
else
scores.push_back(stoi(operation));
return accumulate(scores.begin(), scores.end(), 0);
}
};
/* code provided by PROGIEZ */
682. Baseball Game LeetCode Solution in Java
class Solution {
public int calPoints(String[] operations) {
Deque<Integer> scores = new ArrayDeque<>();
for (final String operation : operations) {
switch (operation) {
case "+":
final int lastScore = scores.pop();
final int secondLastScore = scores.peek();
scores.push(lastScore);
scores.push(lastScore + secondLastScore);
break;
case "D":
scores.push(scores.peek() * 2);
break;
case "C":
scores.pop();
break;
default:
scores.push(Integer.parseInt(operation));
}
}
return scores.stream().mapToInt(Integer::intValue).sum();
}
}
// code provided by PROGIEZ
682. Baseball Game LeetCode Solution in Python
class Solution:
def calPoints(self, operations: list[str]) -> int:
scores = []
for operation in operations:
match operation:
case '+':
scores.append(scores[-1] + scores[-2])
case 'D':
scores.append(scores[-1] * 2)
case 'C':
scores.pop()
case default:
scores.append(int(operation))
return sum(scores)
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.