当前位置: 首页 > 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.15wanjia.com/news/8497.html

相关文章:

  • 台州网站建设开发东莞网站关键词优化排名
  • 故宫文创产品搜索引擎优化论文3000字
  • 网站打开速度优化凡科网免费建站官网
  • 企业做外贸网站常用术语网络营销和网站推广的区别
  • 怎么在工商网站做实名认证seo研究中心怎么样
  • 什么是网络营销?南昌seo计费管理
  • 响应式网站一般怎么设计网络推广方法
  • 南昌网站建设价格百度指数搜索
  • jsp做网站组件湖南正规seo优化报价
  • 做证明图片的网站免费发布信息网站大全
  • 做影视后期应该关注哪些网站百度搜索引擎使用技巧
  • 支付宝接口 网站备案网络营销服务策略
  • 已备案网站外贸推广公司
  • 四川省建设网站电子签章b站视频推广网站动漫
  • 做网站的客服回访话术seo优化推广多少钱
  • 网站挂百度广告网站模板怎么建站
  • 做网站必须要购买域名怎么提交网址让百度收录
  • 网站建设的公司前景百度提问登陆入口
  • 免费的中文logo网站b站推广网站2024年
  • 网页设计公司网站设计十大接单推广app平台
  • 网站建设影音先锋网址网站页面优化包括
  • 少儿类网站怎么做灰色推广引流联系方式
  • 桥西区网站建设湖北网络推广有限公司
  • 更换网站logoseo公司北京
  • 代理记账公司利润大吗seo的优化步骤
  • 聂教练做0网站windows优化大师怎么彻底删除
  • 做移动端网站软件宁波网站推广优化外包
  • 系统那个网站免费seo在线教学
  • 企业网站建设费怎么入账网络营销的seo是做什么的
  • 新开传奇网站刚开一秒第一区中国免费广告网