「代码随想录算法训练营」第十天 | 栈与队列 part2

news/2024/11/14 12:58:51/文章来源:https://www.cnblogs.com/frontpen/p/18299768

150. 逆波兰表达式求值

题目链接:https://leetcode.cn/problems/evaluate-reverse-polish-notation/
题目难度:中等
文章讲解:https://programmercarl.com/0150.逆波兰表达式求值.html
视频讲解:https://www.bilibili.com/video/BV1kd4y1o7on
题目状态:多次修改 bug 后通过

个人思路:

通过进行解决。
先判断队列中的元素是否为数字类型。若为数字类型,压入栈;若不是数字类型,则肯定是运算符,使用switch结构进行运算,将栈中的头两个元素弹出,进行运算符运算,运算后将结果在压入栈中。最后返回栈顶元素。

修改 bug 的过程

  1. 栈的空间:当栈内有两个或两个以上的元素的时候才能进行运算符运算。
  2. 符号判断:在判断队列元素是否为数字的时候,忘记还有负数这一项,需要先判断元素的第一个元素是否为-且元素是否含有多个元素,若是,则从元素中的下一个元素判断是否为数字;若不是,则直接判断。

代码实现:

class Solution {
public:bool isNum(const string &s) {if(s[0] == '-' && s.size() > 1) {for(int i = 1; i < s.size(); ++i) {if(!isdigit(s[i])) return false;}} else if(s[0] == '-' && s.size() == 1) {return false;} else {for(auto &elem: s) {if(!isdigit(elem)) return false;}}return !s.empty();}int evalRPN(vector<string>& tokens) {stack<int> st;for(auto &token: tokens) {if(isNum(token)) {st.push(stoi(token));}else if(!st.empty() && st.size() >= 2){int op1 = st.top(); st.pop();int op2 = st.top(); st.pop();int res = 0;switch(token[0]) {case '+': res = op2 + op1; break;case '-': res = op2 - op1; break;case '*': res = op2 * op1; break;case '/': res = op2 / op1; break;}st.push(res);}}return st.top();}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/742993.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【触想智能】安卓工控一体机在自助终端设备上的应用分析

随着科技的发展和人们对自动化系统的需求不断增强,自助终端设备已经成为日常生活非常常见的设备之一,例如自助售货机、自助点餐机、自助银行服务等。这些设备在使用中都需要一个可靠的、稳定的操作系统来支持其各项功能的实现。因此,安卓工控一体机在自助终端设备上的应用越…

[HarekazeCTF2019]encode_and_encode 1

json绕过,waf绕过 打开之后可以直接看到源码<?php error_reporting(0);if (isset($_GET[source])) {show_source(__FILE__);exit(); }function is_valid($str) {$banword = [// no path traversal\.\.,// no stream wrapper(php|file|glob|data|tp|zip|zlib|phar):,// no …

Windows 11 中使用 Win10的文件资源管理器!速度立马起飞

Windows 11的文件资源管理器功能丰富,但性能略逊于Windows 10版本。新版本增加了选项卡、现代UI和预览窗格等功能,但也导致运行速度变慢。因此,一些用户更偏好旧版本的简洁和快速,甚至怀念经典的Ribbon界面。 好消息是,有一种方法可以永久恢复Windows 10的文件资源管理器。只需…

[NPUCTF2020]ezinclude 1

md5, 题目打开之后是什么都没有的,直接进行抓包可以看到是给了一个hash值的,而且告诉了 Set-Cookie中的Hash就是$md5($secret.$name)(经典脑洞) 如果$name=,则有$md5($secret.$name)=$md5($secret)=上面的Hash 则/?pass=上面的Hash即可,或者带上&name=传递空值访问f…

Python序列

Python序列 在Python中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持以下几种通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。字符串也是一种常见的序列,它也可以直接通过索引访问字符串内的字符。序列索引 序列中,每个元素都有属…

电影《抓娃娃》迅雷BT完整下载[MP4/2.12GB/5.38GB]高清版画质百度云资源[1080p]

在2024年的暑期档,一部由沈腾和马丽主演的爆笑喜剧电影《抓娃娃》横空出世,迅速吸引了广大观众的眼球。这部由闫非、彭大魔执导,彭大魔、闫非、林炳宝共同编剧的作品,不仅延续了开心麻花一贯的幽默风格,更在笑声中融入了深刻的家庭与教育议题,成为了一部既娱乐又具有深度…

vs2022导入optional库optional还报错,解决

修改c++标准为C++17以上项目属性->c/c++->语言 修改c++标准超过c++17VS默认用的标准太低了....这个是C++17引入的参考:https://stackoverflow.com/questions/62370027/namespace-std-does-not-contain-optional

后缀数组【jiangly模板】

目录后缀数组简介后缀数组可以用于什么场景如何实现后缀数组倍增法求后缀数组\(height\) 数组\(LCP\) (最长公共前缀)\(height\)代码模板参考文章后缀数组是一种非常强大的一种处理字符串问题的工具后缀数组简介前置知识:计数排序、基数排序后缀数组(Suffix Array)主要关系…

P2120 [ZJOI2007] 仓库建设

在解决形如 $f_i=\max(f_j+x)$,$x$ 为一些式子的时候可以考虑使用斜率优化,将 $x$ 转成函数然后求这些能取到的函数在 $x$ 上的最高或最低点,从而得到优化。题目大意 \(n\) 个工厂,每个工厂有 \(p_i\) 的货物,货物运输一个单位距离的费用是 \(1\),工厂可以建造仓库,费用…