leetcode-682-棒球比赛

146 阅读1分钟

image.png leetcode原题

解题思路

  • 数字时入栈
  • "+" 时取栈顶元素 + 第二个元素,相加结果入栈
  • "D" 时取栈顶元素 * 2,乘积入栈
  • "C" 时表示上次成绩无效则出栈

最后累加栈内数组返回即可。

var calPoints = function(ops) {
    const stack = []
    ops.forEach(item => {
        if (isNaN(Number(item))) {
            if (item === 'C') {
                stack.pop()
            } else if (item === 'D') {
                stack.push(stack[stack.length -1]*2)
            } else if (item === '+') {
                stack.push(stack[stack.length - 1] + stack[stack.length - 2])
            }
        } else {
            stack.push(Number(item))
        }
    })

    return stack.reduce((prev, curr) => prev + curr)
};