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

(LeetCode 面试经典 150 题) 150. 逆波兰表达式求值 (栈)

题目:150. 逆波兰表达式求值

在这里插入图片描述
在这里插入图片描述
思路:栈,时间复杂度0(n)。

C++版本:

class Solution {
public:int evalRPN(vector<string>& tokens) {stack<int> st;for(auto x:tokens){if(x=="+"){int b=st.top();st.pop();int a=st.top();st.pop();st.push(a+b);}else if(x=="-"){int b=st.top();st.pop();int a=st.top();st.pop();st.push(a-b);}else if(x=="*"){int b=st.top();st.pop();int a=st.top();st.pop();st.push(a*b);}else if(x=="/"){int b=st.top();st.pop();int a=st.top();st.pop();st.push(a/b);}else{int flag=1;int i=0;if(x[0]=='-'){flag=-1;i=1;}int t=0;for(;i<x.size();i++){t=t*10+x[i]-'0';}st.push(t*flag);}}return st.top();}
};

JAVA版本:

class Solution {public int evalRPN(String[] tokens) {Deque<Integer> st=new ArrayDeque<>();for(var x:tokens){if(x.equals("+")){int b=st.pop();int a=st.pop();st.push(a+b);}else if(x.equals("-")){int b=st.pop();int a=st.pop();st.push(a-b);}else if(x.equals("*")){int b=st.pop();int a=st.pop();st.push(a*b);}else if(x.equals("/")){int b=st.pop();int a=st.pop();st.push(a/b);}else{int flag=1;int i=0;if(x.charAt(0)=='-'){flag=-1;i=1;}int t=0;for(;i<x.length();i++){t=t*10+x.charAt(i)-'0';}st.push(t*flag);}}return st.pop();}
}

GO版本:

func evalRPN(tokens []string) int {st:=[]int{}for _,x:=range tokens {if x=="+" {a,b:=st[len(st)-2],st[len(st)-1]st=st[:len(st)-2]st=append(st,a+b)}else if x=="-" {a,b:=st[len(st)-2],st[len(st)-1]st=st[:len(st)-2]st=append(st,a-b)}else if x=="*" {a,b:=st[len(st)-2],st[len(st)-1]st=st[:len(st)-2]st=append(st,a*b)}else if x=="/" {a,b:=st[len(st)-2],st[len(st)-1]st=st[:len(st)-2]st=append(st,a/b)}else{flag,i:=1,0if x[0]=='-' {flag=-1i=1}t:=0for ;i<len(x);i++ {t=t*10+int(x[i]-'0')}st=append(st,flag*t)}}return st[0]
}
http://www.dtcms.com/a/304591.html

相关文章:

  • 电脑主机显示的python版本是3.8.6,但是我在控制面板没有找到,想删除不知道怎么操作怎么办
  • 《 java 随想录》| LeetCode链表高频考题
  • 【LeetCode】大厂面试算法真题回忆(111)--身高排序
  • 鱼皮项目简易版 RPC 框架开发(五)
  • 2.oracle保姆级安装教程
  • 逐渐走进Ai世界~
  • Django模型开发:模型字段、元数据与继承全方位讲解
  • Unity_SRP Batcher
  • 【WRF-Chem 实例1】namelist.input 详解- 模拟CO2
  • 基于AI代码疫苗技术的开源软件供应链安全治理
  • C# _列表(List<T>)_ 字典(Dictionary<TKey, TValue>)
  • 【dropdown组件填坑指南】—怎么实现下拉框的位置计算
  • 【机器学习深度学习】为什么需要分布式训练?
  • 从硬编码到自主智能体:营销AI的20年技术演进与未来展望
  • 前端开发为什么没有后端开发那么清除业务
  • sqLite 数据库 (2):
  • 摔倒识别误报率↓79%:陌讯动态时序融合算法实战解析
  • System V IPC机制:进程通信的统一设计
  • 单片机(STM32-WIFI模块)
  • 【JavaScript】手写 Object.prototype.toString()
  • Qt 移动应用常见问题与解决方案
  • React服务端渲染 Next 使用详解
  • 安卓模拟器 adb Frida hook 抓包
  • Ubuntu第一步——下载、网络、apt
  • 用系统架构思维,告别“意大利面条式”系统提示词
  • 艾利特机器人:光伏机器人如何重塑清洁能源制造新格局
  • 极光GPTBots亮相WAIC,并发布全新Multi-Agent平台
  • AUTOSAR Mcal Gpt - 模块介绍
  • 能源高效利用如何实现?楼宇自控系统智能化监管建筑设备
  • 电池充放电测试仪:解锁能源存储性能的关键工具|鑫达能