1m带宽做网站怎么样,世界500强企业的标准是什么,成都小程序开发方案,东莞市是哪个省题目描述#xff1a; 给你一个字符串数组 tokens #xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 * * 请你计算该表达式。返回一个表示表达式值的整数。 逆波兰表达式#xff1a; * * 逆波兰表达式是一种后缀表达式#xff0c;所谓后缀就是指算符写在后面。 *… 题目描述 给你一个字符串数组 tokens 表示一个根据 逆波兰表示法 表示的算术表达式。 * * 请你计算该表达式。返回一个表示表达式值的整数。 逆波兰表达式 * * 逆波兰表达式是一种后缀表达式所谓后缀就是指算符写在后面。 * * * 平常使用的算式则是一种中缀表达式如 ( 1 2 ) * ( 3 4 ) 。 * 该算式的逆波兰表达式写法为 ( ( 1 2 ) ( 3 4 ) * ) 。 * * * 逆波兰表达式主要有以下两个优点 * * * 去掉括号后表达式无歧义上式即便写成 1 2 3 4 * 也可以依据次序计算出正确结果。 * 适合用栈操作运算遇到数字则入栈遇到算符则取出栈顶两个数字进行计算并将结果压入栈中 解题思路
遇到数字则入栈遇到算符则取出栈顶两个数字进行计算并将结果压入栈中
除法注意小于0向上取整大于0向下取整
解法一
function evalRPN(tokens) {let stask [];for (let i 0; i tokens?.length; i) {// 数字入栈if (/\d/.test(tokens[i])) {stask.push(tokens[i]);} else {const secNum stask.pop();const firNum stask.pop();eval(stask.push(${firNum} ${tokens[i]} ${secNum} 0 ? Math.ceil(${firNum} ${tokens[i]} ${secNum}) : Math.floor(${firNum} ${tokens[i]} ${secNum})),);}}return stask.pop();
}; 用时
// Your runtime beats 20.53 % of typescript submissions
// Your memory usage beats 5.27 % of typescript submissions (59.6 MB) 优化
除法的取整 实际上就是 Math.trunc 去掉小数部分
eval(stask.push(Math.trunc(${firNum} ${tokens[i]} ${secNum})))