leetcode oj
150. 逆波兰表达式求值 - 力扣(LeetCode)
思路:定义一个名为 Solution 的类,并在其中定义了一个名为 evalRPN 的公共函数。这个函数接受一个由字符串组成的向量 tokens 作为输入,并返回一个整数。
在代码中,首先定义了一个栈 st,用于存储运算过程中的中间结果。
接下来,代码使用一个 for 循环遍历 tokens 中的每个字符串。在循环中,首先判断字符串是否为运算符(+、-、*、/),如果是,则进行相应的运算。具体来说,先将栈顶的两个数 pop 出来,然后根据运算符进行加、减、乘、除等运算,并将结果 push 回栈中。
如果遇到的字符串不是运算符,则直接将其转换为整数,并 push 入栈中。
最后,代码返回栈顶的数值,即最终的计算结果。
如果用这个代码就是测试用列就通不过:
class Solution {
public:int evalRPN(vector<string>& tokens) {
stack<int> st;for(auto str:tokens)
{if( str=="+"||str=="-"||str=="*"||str=="/")
{int left=st.top();st.pop();int right=st.top();st.pop();switch(str[0])
{case '+':
st.push(left+right);
break;
case '-':
st.push(left-right);
break;
case '*':
st.push(left*right);
break;
case '/':
st.push(left/right);
break;
}
}
else
{st.push(stoi(str));
}
}
return st.top();}
};
这个代码就过了:
class Solution {
public:int evalRPN(vector<string>& tokens) {
stack<int> st;for(auto str:tokens)
{
if(str=="+"||str=="-"||str=="*"||str=="/"
)
{int left=st.top();st.pop();int right=st.top();st.pop();switch(str[0])
{case '+':
st.push(left+right);
break;
case '-':
st.push(left-right);
break;
case '*':
st.push(left*right);
break;
case '/':
st.push(left/right);
break;
}
}
else
{st.push(stoi(str));
}
}
return st.top();}
};class Solution {
public:int evalRPN(vector<string>& tokens) {stack<int> st;for(auto str:tokens)
{if( str=="+"||str=="-"||str=="*"||str=="/"){int right=st.top();st.pop();int left=st.top();st.pop();switch(str[0]){case '+':st.push(left+right);break;case '-':st.push(left-right);break;case '*':st.push(left*right);break;case '/':st.push(left/right);break;}}else{st.push(stoi(str));}}
return st.top();}
};
两段代码的区别:
int left=st.top();st.pop();int right=st.top();st.pop();int right=st.top();st.pop();int left=st.top();st.pop();
我刚开始以为left right就是两个变量,随便哪个先定义无所谓,但是下面的运算中有"/",left和right谁先出栈谁就在前面作为被除数,谁作为被输数会影响到结果。
相关文章:

leetcode oj
150. 逆波兰表达式求值 - 力扣(LeetCode) 思路:定义一个名为 Solution 的类,并在其中定义了一个名为 evalRPN 的公共函数。这个函数接受一个由字符串组成的向量 tokens 作为输入,并返回一个整数。 在代码中࿰…...

黑马点评-05缓存穿透问题及其解决方案,缓存空字符串或使用布隆过滤器
缓存穿透问题(缓存空) 缓存穿透的解决方案 缓存穿透(数据穿透缓存直击数据库): 缓存穿透是指客户端请求访问缓存中和数据库中都不存在的数据,此时缓存永远不会生效并且用户的请求都会打到数据库 数据库能够承载的并发不如Redis这么高,如果大量的请求同时访问这种…...

Flink之窗口聚合算子
1.窗口聚合算子 在Flink中窗口聚合算子主要分类两类 滚动聚合算子(增量聚合)全窗口聚合算子(全量聚合) 1.1 滚动聚合算子 滚动聚合算子一次只处理一条数据,通过算子中的累加器对聚合结果进行更新,当窗口触发时再从累加器中取结果数据,一般使用算子如下: aggregatemaxmaxBy…...

K8S:Rancher管理 Kubernetes 集群
文章目录 一.Rancher 简介1.Rancher概念2.Rancher 和 k8s 的区别 二.Rancher 安装及配置1.安装 rancher2.登录 Rancher 平台3.Rancher 管理已存在的 k8s 集群4.Rancher 部署监控系统5.使用 Rancher 仪表盘管理 k8s 集群 三.拓展1.Rancher和kubesphere相比较2.K3S和K8S相比较 一…...

后台运行python程序并查看运行的python 进程
nohup python -u Job.py > log.log 2>&1 &说明: 末尾的“&”:表示后台运行程序 “nohup” :保证程序不被挂起 “python”:是执行python代码的命令 “-u”:表示不启用缓存,实时输出打印…...

树莓派部署.net core网站程序
1、发布你的项目 使用mobaxterm上传程序 回到mobaxterm,f进入目录输入: cd webpublish 运行程序:dotnet WebApplication1.dll 访问地址为:http://localhost:5000,尝访问如下: 已经出现 返回的json,证明是可以访问的…...

淘宝商品评论数据接口,淘宝商品评论API接口
淘宝商品评论数据接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL,可以向淘宝服务器发起HTTP请求,获取商品评论数据。接口返回的数据一般为JSON格式,包含了商品的各种评价信息。获取到商品评论数据后,可以对其进行处理…...

455. 分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] …...

GEE:数据预处理的细节(处理顺序。比如, select() 和 filter() 要优先于 map())
作者:CSDN @ _养乐多_ 大家在数据预处理的时候,是不是随意进行处理,并没有考虑 Google Earth Engine(GEE)性能的问题?比如选择数据集的时候,先执行map函数,再按时间选择数据?不同的处理顺序会导致不同的计算成本。 因此,本文将探讨如何在 GEE 中筛选和选择数据集合…...

【AHK】任务栏调节音量/边缘滚动调节/边缘触发
通过ahk实现类似mouseinc的边缘滚动调节音量的功能,有两个思路。 任务栏调节音量 #If MouseIsOver("ahk_class Shell_TrayWnd") WheelUp::Send {Volume_Up} WheelDown::Send {Volume_Down} return #IfMouseIsOver(WinTitle) {MouseGetPos,,, Winreturn …...

Chrome插件 — ReRes
ReRes插件是一款可以帮助Web开发人员进行开发和测试的Chrome浏览器扩展。它可以模拟网页请求,并返回指定的响应。 该插件可以用于多种情况,例如: 测试网站功能,调试程序等;本地开发Web应用时,模拟远程API…...

前端面试基础面试题——9
1.js 延迟加载的方式有哪些? 2.js同步和异步的区别? 3.什么是浏览器的同源政策? 4.介绍一下 js 的节流与防抖? 5.js 中的深浅拷贝实现? 6.Js 动画与 CSS 动画区别及相应实现 7.观察者模式和发布订阅模式有什么不同…...

tomcat 问题
一、start up.bat 闪退 在命令窗口run 看看是缺少了哪个环境变量 二、控制台输出乱码 logging.properties 底部添加 java.util.logging.ConsoleHandler.encoding GBK 三、缓存不足 context.xml配置 <Resources cachingAllowed"false" cacheMaxSize"100…...

小程序首页如何进行装修设置
小程序首页是展示给用户的第一屏,它的装修直接影响到用户对小程序的第一印象。小程序首页的设置在小程序管理员后台->页面设置->首页,下图是小程序首页默认的设置。 下图,是小程序首页的具体表现形式。下面具体解释小程序首页各个设置项…...
npm安装依赖报错npm ERR! code ENOTFOUND npm ERR! errno ENOTFOUND、npm run dev报错记录
npm安装依赖报错npm ERR! code ENOTFOUND npm ERR! errno ENOTFOUND_得我所得,爱我所爱的博客-CSDN博客npm安装依赖报错今天在学习webpack的时候,在使用npm install来安装一个局部的webpack时候,报出一下错误:npm ERR! code ENOTFOUNDnpm ERR…...

堆叠注入([强网杯 2019]随便注1)
详解: 堆叠注入(Stack Injection)是一种计算机安全概念,涉及攻击者向程序的堆栈内存中插入恶意代码,以便在程序执行期间执行非预期的操作。 堆栈注入攻击通常利用程序在处理函数调用时使用的堆栈机制。当一个函数被调…...

零基础Linux_15(基础IO_文件)软硬链接+动静态库详解
目录 1. 软硬链接 1.1 创建软链接 1.2 创建硬链接 1.3 硬链接数和unlink 2. 动静态库 2.1 制作静态库 2.2 查看和打包静态库 2.3 使用静态库 2.3.1 安装在默认搜索路径 2.3.2 告知路径库路径库名 2.4 制作动态库 2.5 使用动态库 2.5.1 安装在默认搜索路径 2.5.2 …...

计算机毕业设计选什么题目好?springboot 健身房管理系统
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...

两台linux 之间传输文件 (详细+bash脚本)
两台linux设备文件直接传输,有很多应用场景 一、可能的方案 (一)先下载再上传 从linux通过ssh下载到windows下,然后再通过ssh上传到另一台linux。 1.优点:简单 2.缺点:效率低,需要额外的设备…...

嵌入式系统开发【深入浅出】 EXTI 与 NVIC
目录 CPU 感知外部事件变化的三种方式 中断分三个级别 中断控制器 STM32 的中断和异常 NVIC 中断控制器 NVIC 结构体成员 抢占优先级和响应优先级 简单配置NVIC中断控制器 EXTI 外部中断【中断源级】 STM32系列微控制器实际上最多有23根外部中断线(EXT…...

【Kali】简单记录
文章目录 信息收集DNS记录分析hostdigdnsenum 路由信息tcptraceroutetctrace 搜索引擎 目标识别arpingfping 识别操作系统p0f 服务枚举端口扫描nmap识别VPN服务器 漏洞映射exploitdbmsfconsole 提权arpspoofDsniff 信息收集 DNS记录分析 host host www.example.com host -a …...

【数据结构】:队列的实现
队列 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队…...

415. 字符串相加
415. 字符串相加 class Solution { public:string addStrings(string num1, string num2){//i j分别指向当前字符串的最后一位int i num1.length() - 1;int j num2.length() - 1;int add 0;string s "";//不要忽略两个串都遍历完了 但是还有一个进位while (i …...

交通 | python网络爬虫:“多线程并行 + 多线程异步协程
推文作者:Amiee 编者按: 常规爬虫都是爬完一个网页接着爬下一个网页,不适应数据量大的网页,本文介绍了多线程处理同时爬取多个网页的内容,提升爬虫效率。 1.引言 一般而言,常规爬虫都是爬完一个网页接着…...

LeetCode:1488. 避免洪水泛滥(2023.10.13 C++)
目录 1488. 避免洪水泛滥 实现代码与解析: 贪心 原理思路: 1488. 避免洪水泛滥 题目描述: 你的国家有无数个湖泊,所有湖泊一开始都是空的。当第 n 个湖泊下雨前是空的,那么它就会装满水。如果第 n 个湖泊下雨前是…...

SpringBoot 时 jar 报错 没有主清单属性
SpringBoot 时 jar 报错 没有主清单属性 参考资料 使用阿里版 Spring Initializr 创建的项目。 springboot 2.6.13 JDK 1.8 这里自动开了skip。 注释后打的 jar 包就可以运行了。 <build><finalName>${name}</finalName><plugins><plugin><…...

C/S架构学习之多进程实现TCP并发服务器
多进程实现TCP并发服务器的实现流程:一、自定义信号处理函数(sig_func函数): void sig_func(int signum){wait(NULL);}wait函数: #include <sys/types.h>#include <sys/wait.h>pid_t wait(int *wstatus);/*功能&#…...

VSCode 快速移动光标至行尾
最近在用vscode进行C编程,经常需要把光标跳到行尾去添加符号。 手动到行尾太麻烦了。 一种快捷方式是:用键盘上的“END”快捷键。 但是用这个键也不是很方便,因为“end”键离主键盘区太远。 另一种便捷的方式是:给vscode设置自定义…...

ACP.复盘方法
复盘要怎么做的有水准,让领导满意,方式方法很重要。今天给你们安利5种复盘方法,保准你省事,领导还满意。 一、KPT复盘法 7月份年中一直在做和复盘相关的事,像公司的OKR复盘、年中战略规划,不过日常很多生…...

Springboot 订餐管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目
一、源码特点 springboot 订餐管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有 完整的源代码和数据库&…...