题目英文

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

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

Note:

  • Division between two integers should truncate toward zero.
  • The given RPN expression is always valid. That means the expression would always evaluate to a result and there won’t be any divide by zero operation.

Example 1:

Input: ["2", "1", "+", "3", "*"]
Output: 9
Explanation: ((2 + 1) * 3) = 9

Example 2:

Input: ["4", "13", "5", "/", "+"]
Output: 6
Explanation: (4 + (13 / 5)) = 6

Example 3:

Input: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]
Output: 22
Explanation: ((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

题目中文

根据逆波兰表示法,求表达式的值。

有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

说明:

  • 整数除法只保留整数部分。
  • 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

示例 1

输入: ["2", "1", "+", "3", "*"]
输出: 9
解释: ((2 + 1) * 3) = 9

示例 2

输入: ["4", "13", "5", "/", "+"]
输出: 6
解释: (4 + (13 / 5)) = 6

示例 3

输入: ["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

算法实现

public class Solution {public int EvalRPN(string[] tokens) {Stack<int> stack = new Stack<int>();for (int i = 0; i < tokens.Length; i++){string str = tokens[i];if (str == "+" || str == "-" || str == "*" || str == "/"){int b = stack.Pop();int a = stack.Pop();int c = Compute(a, b, str);stack.Push(c);}else{stack.Push(int.Parse(str));}}return stack.Pop();        }public static int Compute(int a, int b, string oper){int result = 0;switch (oper){case "+":result = a + b;break;case "-":result = a - b;break;case "*":result = a * b;break;case "/":result = a / b;break;}return result;}
}

实验结果

  • 状态:通过
  • 20 / 20 个通过测试用例
  • 执行用时:144 ms


相关图文

  • LeetCode实战:两数之和
  • LeetCode实战:三数之和
  • LeetCode实战:缺失的第一个正数
  • LeetCode实战:求众数
  • LeetCode实战:快乐数
  • LeetCode实战:删除链表的倒数第N个节点
  • LeetCode实战:合并两个有序链表
  • LeetCode实战:合并K个排序链表
  • LeetCode实战:两两交换链表中的节点
  • LeetCode实战:旋转链表
  • LeetCode实战:环形链表
  • LeetCode实战:相同的树
  • LeetCode实战:对称二叉树
  • LeetCode实战:二叉树的最大深度
  • LeetCode实战:搜索二维矩阵
  • LeetCode实战:将有序数组转换为二叉搜索树

LeetCode实战:逆波兰表达式求值相关推荐

  1. 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)

    题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...

  2. leetcode 150. 逆波兰表达式求值(栈)

    根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达 ...

  3. Leetcode 150. 逆波兰表达式求值 解题思路及C++实现

    解题思路: 使用一个栈来存储待计算的数字,当遇到符号时,则将栈顶的两个元素pop出来,计算得到新的数字,然后再push进栈,大循环内,每循环一次,就访问了容器中的一个string.大循环停止条件:遍历 ...

  4. [leetcode] 150. 逆波兰表达式求值

    class Solution {public:int evalRPN(vector<string>& tokens) {int len = tokens.size();stack& ...

  5. 代码随想录第11天 | LeetCode20. 有效的括号、LeetCode1047. 删除字符串中的所有相邻重复项、LeetCode150. 逆波兰表达式求值

    day11 | LeetCode20. 有效的括号.LeetCode1047. 删除字符串中的所有相邻重复项.LeetCode150. 逆波兰表达式求值 文章目录 day11 | LeetCode20 ...

  6. JavaScript逆波兰表达式求值

    逆波兰表达式简介 逆波兰表达式又叫做后缀表达式.逆波兰表示法是波兰逻辑学家J・卢卡西维兹(J・ Lukasiewicz)于1929年首先提出的一种表达式的表示方法 .后来,人们就把用这种表示法写出的表 ...

  7. 逆波兰表达式求值(leetcode 150)

    文章目录 1.问题描述 2.难度等级 3.热门指数 4.解题思路 5.实现示例 5.1 C++ 5.2 Golang 参考文献 1.问题描述 逆波兰表达式也叫后缀表达式. 有效的算符包括 +.-.*. ...

  8. 算法训练Day11|LeetCode 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

    题目链接:20. 有效的括号 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字 ...

  9. (补)算法训练Day13 | LeetCode150. 逆波兰表达式求值(栈应用);LeetCode239. 滑动窗口最大值(单调队列);LeetCode347. 前K个高频元素(小顶堆,优先级队列)

    目录 LeetCode150. 逆波兰表达式求值 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode239. 滑动窗口最大值 1. 思路 2. 代码实现 3. 复杂度分析 4. ...

  10. LetCode: 150. 逆波兰表达式求值

    提示 LintCode中的相关算法题实现代码,可以在我的GithHub中下载. 题目需求 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另 ...

最新文章

  1. python——装饰器
  2. Winforn中使用代码动态生成控件
  3. Excel使用控件创建动态地图图表
  4. 网上订餐python_来自美国网上订餐网站的创新
  5. ElementUI+Java实现搜索提示列表
  6. 30分钟后的飞鸽传书
  7. iframe框架页面实现自适应高度解决方案
  8. MySql.Data.dll官网下载
  9. linux--history命令
  10. MySQL下xtrabackup与MTS造成的死锁
  11. 测绘工程野外测量实践实习
  12. 源码时代html考试题,源码时代老师详解Web前端开发的三要素
  13. Vibe算法简介、优缺点、代码
  14. php代码执行函数解析
  15. thinkphp5.1合成带二维码海报图片
  16. Oracle 系列 统计信息详解(Statistic)
  17. 关于gis中坐标系:WGS84,EPSG4326,EPSG3857,墨卡托。EPSG:4490
  18. 【数据结构】7-1 软硬车厢交替排列 (13 分)
  19. linux如何给脚本等创建一个桌面启动图标
  20. 【SpringBoot商城秒杀系统秒杀优化学习笔记】

热门文章

  1. hung-yi lee_p11_逻辑回归
  2. 总结:SQL的优缺点及与NoSQL对比
  3. linux mpp集群环境,Linux环境下,DM8-MPP两节点集群搭建
  4. 学习UI设计能做什么
  5. linux 普通用户 mysql_Linux普通用户部署mysql
  6. Nancy in .Net Core学习笔记 - 初识Nancy
  7. std::string的find问题研究
  8. R语言通过loess去除某个变量对数据的影响
  9. Discuz DB层跨库映射关系表名前缀BUG修复后产生的新bug
  10. android环境安装之android4.2安装(转)