当前位置:网站首页>模拟卷Leetcode【普通】150. 逆波兰表达式求值
模拟卷Leetcode【普通】150. 逆波兰表达式求值
2022-07-29 05:39:00 【邂逅模拟卷】
汇总:模拟卷Leetcode 题解汇总
150. 逆波兰表达式求值
根据 逆波兰表示法,求表达式的值。
有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
注意 两个整数之间的除法只保留整数部分。
可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
示例 1:
输入:tokens = [“2”,“1”,“+”,“3”,“*”]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9
示例 2:
输入:tokens = [“4”,“13”,“5”,“/”,“+”]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6
示例 3:
输入:tokens = [“10”,“6”,“9”,“3”,“+”,“-11”,““,”/“,””,“17”,“+”,“5”,“+”]
输出:22
解释:该算式转化为常见的中缀算术表达式为:
((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22
提示:
1 <= tokens.length <= 104
tokens[i] 是一个算符(“+”、“-”、“*” 或 “/”),或是在范围 [-200, 200] 内的一个整数
逆波兰表达式:
逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。
平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。
该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * ) 。
逆波兰表达式主要有以下两个优点:
去掉括号后表达式无歧义,上式即便写成 1 2 + 3 4 + * 也可以依据次序计算出正确结果。
适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码:
from leetcode_python.utils import *
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stack = []
for x in tokens:
if x in '+-*/':
b = stack.pop(-1)
a = stack.pop(-1)
stack.append(int(eval(f"{
a}{
x}{
b}")))
else:
stack.append(x)
return int(stack[0])
def test(data_test):
s = Solution()
data = data_test # normal
# data = [List2Node(data_test[0])] # list转node
return s.evalRPN(*data)
def test_obj(data_test):
result = [None]
obj = Solution(*data_test[1][0])
for fun, data in zip(data_test[0][1::], data_test[1][1::]):
if data:
res = obj.__getattribute__(fun)(*data)
else:
res = obj.__getattribute__(fun)()
result.append(res)
return result
if __name__ == '__main__':
datas = [
[["10","6","9","3","+","-11","*","/","*","17","+","5","+"]],
]
for data_test in datas:
t0 = time.time()
print('-' * 50)
print('input:', data_test)
print('output:', test(data_test))
print(f'use time:{
time.time() - t0}s')
备注:
GitHub:https://github.com/monijuan/leetcode_python
CSDN汇总:模拟卷Leetcode 题解汇总
可以加QQ群交流:1092754609
leetcode_python.utils详见汇总页说明
先刷的题,之后用脚本生成的blog,如果有错请留言,我看到了会修改的!谢谢!
边栏推荐
- 模拟卷Leetcode【普通】093. 复原 IP 地址
- CNN convolutional neural network
- 实战!聊聊如何解决MySQL深分页问题
- Embedding理解+代码
- 崔雪婷老师最优化理论与方法课程笔记 00 写在前面
- Teacher wangshuyao's notes on operations research 06 linear programming and simplex method (geometric significance)
- 王树尧老师运筹学课程笔记 06 线性规划与单纯形法(几何意义)
- 王树尧老师运筹学课程笔记 08 线性规划与单纯形法(单纯形法)
- Recurrent neural network RNN
- Shallow reading of condition object source code
猜你喜欢

Apisik health check test

Share some tips for better code, smooth coding and improve efficiency

矩阵分解与梯度下降

Recurrent neural network RNN

Shallow reading of condition object source code

Software definition boundary SDP

Embedding understanding + code

Understanding of access, hybrid and trunk modes

阿里一面,给了几条SQL,问需要执行几次树搜索操作?

Annotation
随机推荐
Teacher wangshuyao's notes on operations research course 10 linear programming and simplex method (discussion on detection number and degradation)
Teacher Wu Enda machine learning course notes 01 introduction
JMM 内存模型概念
王树尧老师运筹学课程笔记 10 线性规划与单纯形法(关于检测数与退化的讨论)
关于SQL Server语句入门级应用阶段性学习——找工作必备(一)
SS command details
DM数据守护集群搭建
新同事写了几段小代码,把系统给搞崩了,被老板爆怼一顿!
软件定义边界SDP
吴恩达老师机器学习课程笔记 00 写在前面
Shallow reading of condition object source code
Callable 的使用
finally 和 return 的执行顺序
Biased lock, lightweight lock test tool class level related commands
吴恩达老师机器学习课程笔记 04 多元线性回归
Unity探索地块通路设计分析 & 流程+代码具体实现
王树尧老师运筹学课程笔记 03 KKT定理
IDEA中实现Mapper接口到映射文件xml的跳转
Case supplement, ATM
吴恩达老师机器学习课程笔记 02 单变量线性回归