package
0.0.0-20241101153438-fc0a12dbc586
Repository: https://github.com/guvanchhojamov/code-ship.git
Documentation: pkg.go.dev
# README
682. Baseball Game
Description
This problem involves keeping scores for a baseball game with a set of unique rules. Starting with an empty score record, you are provided with a list of string operations where each operation can be:
- An integer
x
: Record a new score ofx
. "+"
: Record a new score that is the sum of the previous two scores."D"
: Record a new score that is double the previous score."C"
: Invalidate and remove the previous score.
You need to return the sum of all the scores on the record after applying all the operations.
Examples
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]. 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]. 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 []. Total sum is 0.
Constraints
- 1 <= operations.length <= 1000
- operations[i] is "C", "D", "+", or a string representing an integer in the range [-3 * 10^4, 3 * 10^4].
- 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.
Topics
- Array
- Stack
- Simulation
Companies
- This problem has been used in interviews for numerous tech companies.
Solution
func calPoints(operations []string) int {
var stack []int
var result int
for i := 0; i < len(operations); i++ {
switch operations[i] {
case "+":
if len(stack) > 1 {
result += stack[len(stack)-1] + stack[len(stack)-2]
stack = append(stack, stack[len(stack)-1]+stack[len(stack)-2])
}
case "D":
result += stack[len(stack)-1] * 2
stack = append(stack, stack[len(stack)-1]*2)
case "C":
if len(stack) > 0 {
result -= stack[len(stack)-1]
stack = stack[0 : len(stack)-1]
}
default:
val, _ := strconv.Atoi(operations[i])
stack = append(stack, val)
result += val
}
}
return result
}