数据结构之"栈"

栈(计算机术语)

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

题目: 682. 棒球比赛

思路:用数组实现堆栈结构,进而得出每轮的分数

function calPoints(arr) {
    // 用数组来实现堆栈结构,pop,push
    let result = [];
    // 上一轮的数据
    let pre1 = 0;
    // 对数组进行遍历,遍历的目的是处理得分
    let pre2 = 0;
    arr.forEach(item => {
        switch (item) {
            case 'C':
                if (result.length) {
                    result.pop();
                } else {
                    result.push(0);
                }
                break;
            case 'D':
                if (result.length) {
                    pre1 = result.pop();
                    result.push(pre1, pre1 * 2);
                } else {
                    result.push(0);
                }
                break;
            case '+':
                if (result.length) {
                    pre1 = result.pop();
                    if (result.length) {
                        pre2 = result.pop();
                        result.push(pre2, pre1, pre2 + pre1);
                    } else {
                        result.push(pre1, 0);
                    }
                } else {
                    result.push(0);
                }
                break;
            default:
                result.push(item * 1);
                break;
        }
    });
    return result.reduce((total, num) => total + num);
}

你可能感兴趣的:(数据结构之"栈")