栈(计算机术语)
栈(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);
}
网友评论