leetcode-682.棒球比赛

发布时间 2023-07-07 13:30:19作者: 吴丹阳-V
package main

import (
	"strconv"
)

/*
 * @lc app=leetcode.cn id=682 lang=golang
 *
 * [682] 棒球比赛
 */

// @lc code=start
func sum(numbers []int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}
func calPoints(operations []string) int {
	ret := make([]int, 0, len(operations))

	for _, op := range operations {
		switch op {
		case "+":
			ret = append(ret, ret[len(ret)-1] + ret[len(ret)-2])
		case "C":
			ret = ret[:len(ret)-1]
		case "D":
			ret = append(ret, 2*ret[len(ret)-1])
		default:
			num, _ := strconv.Atoi(op)
			ret = append(ret, num)
		}
	}

	return sum(ret)
}
// @lc code=end


这个题目的思路是用一个栈来存储每一轮的得分,然后遇到C的时候,就把栈顶的元素弹出,遇到D的时候,就把栈顶的元素翻倍,遇到+的时候,就把栈顶的两个元素相加,最后把栈里面的元素全部相加就是最后的得分了。