经典使用栈的题目
- 遍历数组,让数字入栈,遇到加减乘除的就出战两个数,并且将计算结果放入栈中
- 这里需要注意一下就是,正数的浮点数需要向下取整,负数的浮点数要向上取整
代码实现
var evalRPN = function (arr) {
var stack = [];
var len = arr.length;
for (var i = 0; i < len; i++) {
var item = arr[i];
if (!["+", "-", "*", "/"].includes(item)) {
stack.push(parseInt(item));
} else {
var p2 = stack.pop();
var p1 = stack.pop();
if (item === "+") {
stack.push(p1 + p2);
} else if (item === "-") {
stack.push(p1 - p2);
} else if (item === "*") {
stack.push(p1 * p2);
} else if (item === "/") {
stack.push(p1 / p2 > 0 ? Math.floor(p1 / p2) : Math.ceil(p1 / p2));
}
}
}
return stack.pop();
};