博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Evaluate Reverse Polish Notation 计算逆波兰表达式
阅读量:6822 次
发布时间:2019-06-26

本文共 1276 字,大约阅读时间需要 4 分钟。

Evaluate Reverse Polish Notation

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

Valid operators are +, -, *, /. Each operand may be an integer or another expression.

Some examples:

["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

栈法

复杂度

时间 O(N) 空间 O(N)

思路

逆波兰表达式的计算十分方便,对于运算符,其运算的两个数就是这个运算符前面的两个数。所以我们只要用一个栈,每次遇到数字就压入栈内,每次遇到运算符就弹出两个数,计算后再压回栈内,最后栈内剩下的那个数就是计算结果了。

注意

对于减法,先弹出的是减号后面的数。对于除法,先弹出的是除号后面的数。

代码

public class Solution {    public int evalRPN(String[] tokens) {        Stack
stk = new Stack
(); for(String token : tokens){ switch(token){ case "+": stk.push(stk.pop() + stk.pop()); break; case "-": stk.push(-stk.pop() + stk.pop()); break; case "/": int num1 = stk.pop(); int num2 = stk.pop(); stk.push(num2 / num1); break; case "*": stk.push(stk.pop() * stk.pop()); break; default: stk.push(Integer.parseInt(token)); } } return stk.pop(); }}

转载地址:http://mwgzl.baihongyu.com/

你可能感兴趣的文章
Nginx+Keepalived主备负载均衡学习笔记
查看>>
用SHELL脚本自动化安装Nagios服务器端和客户端的
查看>>
Swift的一些翻译4:Designing UI Using Stack Views
查看>>
测试日志发送 by WLW
查看>>
Linux零基础入学之1-2可用快照创建和服务器的组装
查看>>
css中如何使div居中(垂直水平居中)
查看>>
nginx配置tinkphp PATHINFO模式
查看>>
Cannot set up guest memory 'android_arm': Invalid argument 解决方法
查看>>
shell脚本--判断cpu厂商
查看>>
Sleuth.js - 想用啥就用啥
查看>>
红杏客服手册
查看>>
linux文件系统分类
查看>>
php源码编译
查看>>
linux系统下的sed命令详解(一)
查看>>
System Center 2012 R2实例3—SCOM之SharePoint全方位监视7—邮件警报
查看>>
c语言:有一个分数序列: 2/1+3/2+5/3+8/5+13/8+… 求出这个数列前 20 项的和
查看>>
JAVA 代理模式(Proxy)
查看>>
我的友情链接
查看>>
使用 golang 收集系统指标
查看>>
nginx 启动脚本
查看>>