当前位置: 首页 > news >正文

重庆网站建设外包广告软文范例

重庆网站建设外包,广告软文范例,邢台做网站建设优化制作公司,怎样做网站外部链接题目 150. 逆波兰表达式求值 中等 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算对象)都…

题目

150. 逆波兰表达式求值

中等

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:

  • 有效的算符为 '+''-''*' 和 '/' 。
  • 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
  • 两个整数之间的除法总是 向零截断 。
  • 表达式中不含除零运算。
  • 输入是一个根据逆波兰表示法表示的算术表达式。
  • 答案及所有中间计算结果可以用 32 位 整数表示。

示例 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 + * 也可以依据次序计算出正确结果。
  • 适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中

思路和解题方法

        首先,我们创建一个栈 stk 用于存储数字。然后遍历字符串数组 tokens 中的每一个元素。

        如果当前元素是数字,我们将其转换为整数并将其压入栈 stk 中。

        如果当前元素是操作符,我们从栈 stk 中弹出两个元素进行计算,并将计算结果压入栈 stk 中。

        最后,栈顶元素即为逆波兰表达式的计算结果,将其返回即可。

在实现过程中,我们使用一个辅助函数 isNumber(),通过判断当前元素是否为运算符来确定相应的操作。

复杂度

        时间复杂度:

                O(n)

空间复杂度均为 O(n),其中 n 是字符串数组 tokens 的长度。

        空间复杂度

                O(n)

空间复杂度为 O(n)。

c++ 代码

 ​
class Solution {
public:int evalRPN(vector<string>& tokens) {stack<int> stk;  // 创建一个栈用于存储数字int n = tokens.size();  // 获取字符串数组的长度for (int i = 0; i < n; i++) {  // 遍历字符串数组中的每一个元素string& token = tokens[i];if (isNumber(token)) {  // 如果当前元素是数字stk.push(atoi(token.c_str()));  // 将其转换为整数并压入栈中} else {  // 如果当前元素是操作符int num2 = stk.top();  // 从栈中弹出第二个数字stk.pop();int num1 = stk.top();  // 从栈中弹出第一个数字stk.pop();switch (token[0]) {  // 根据操作符进行计算并将结果压入栈中case '+':stk.push(num1 + num2);break;case '-':stk.push(num1 - num2);break;case '*':stk.push(num1 * num2);break;case '/':stk.push(num1 / num2);break;}}}return stk.top();  // 返回栈顶元素作为逆波兰表达式的计算结果}bool isNumber(string& token) {  // 判断当前元素是否是数字return !(token == "+" || token == "-" || token == "*" || token == "/");}
};

觉得有用的话可以点点赞,支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦  >人<  。

http://www.khdw.cn/news/8335.html

相关文章:

  • 长沙 外贸网站建设公司价格赛事资讯赛马资料
  • 故宫文创产品网络营销seo培训
  • 写文章wordpress上海seo公司哪家好
  • 百度网站建设什么是seo搜索
  • 网站开发 如何定位河北网站建设制作
  • asp做旅游网站毕业论文营销型网站建设目标
  • wordpress导航菜单函数网站内容优化怎么去优化呢
  • 如何创建个人博客网站中国十大互联网公司排名
  • 做广告公司网站建设百度搜索风云榜
  • 深圳商城网站哪家做的好南京搜索引擎推广优化
  • 建设银行网络学习网站企业邮箱入口
  • 只有一个域名怎么做网站上海seo公司
  • 怎么做seo网站推广seo上海培训
  • 手机网站建设的背景seo排名技术软件
  • 网站怎么做流量产品如何做市场推广
  • 东莞平台网站建设设计公司seo工具网站
  • 西安机场商务宾馆百度做网站厦门网站优化
  • 互联网传媒 网站短视频seo优化排名
  • h5链接怎么做建站 seo课程
  • 网站建设实训方案百度网盘网页登录入口
  • 河南省建设工程造价信息网站长工具seo综合查询下载
  • 网站推广做多大尺寸黑帽seo教程
  • 南京网站建设制作淘宝直通车
  • 网站开发最适合的浏览器做一个推广网站大概多少钱
  • 唐山公司网站建设 中企动力网络广告文案案例
  • 网站建设文章舆情通
  • 做网站的网页新产品怎样推广
  • 专业网站建设网站设计网络营销专业就业公司
  • 网站域名com和cn的差别在哪里福州网站seo公司
  • 妈妈做愛网站杭州百家号优化