栈与队列|150.逆波兰表达式求值

news2024/10/6 12:23:59

力扣题目链接

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        // 力扣修改了后台测试数据,需要用longlong
        stack<long long> st; 
        for (int i = 0; i < tokens.size(); i++) {
            if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {
                long long num1 = st.top();
                st.pop();
                long long num2 = st.top();
                st.pop();
                if (tokens[i] == "+") st.push(num2 + num1);
                if (tokens[i] == "-") st.push(num2 - num1);
                if (tokens[i] == "*") st.push(num2 * num1);
                if (tokens[i] == "/") st.push(num2 / num1);
            } else {
                st.push(stoll(tokens[i]));
            }
        }

        int result = st.top();
        st.pop(); // 把栈里最后一个元素弹出(其实不弹出也没事)
        return result;
    }
};

c++里面不熟悉的函数可以自己搜索学会~

逆波兰表达式也要理解是个什么嘿嘿嘿

自己写就细节方面到处出错。。。。 

一、出错点

1.一开始不知道如何运用栈求逆波兰表达式的值。

2.代码错误。

二、理解后的思路

求逆波兰表达式的值

看到一个运算符就计算前两个数字

栈的最后表演! | LeetCode:150. 逆波兰表达式求值_哔哩哔哩_bilibili

那么来看一下本题,其实逆波兰表达式相当于是二叉树中的后序遍历。 大家可以把运算符作为中间节点,按照后序遍历的规则画出一个二叉树。

但我们没有必要从二叉树的角度去解决这个问题,只要知道逆波兰表达式是用后序遍历的方式把二叉树序列化了,就可以了。

在进一步看,本题中每一个子表达式要得出一个结果,然后拿这个结果再进行运算

三、总结

回顾之前的题目,不看答案自己独立敲代码,自己调试。减少代码出错的几率,锻炼熟练度。

对于栈的知识要把它的函数全部都很熟悉啊~


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从政府工作报告探究计算机行业发展

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

实现更高能效的汽车级低边驱动器NRVB140ESFT1G 带温度和电流限制 自保护低压侧驱动器

一起去了解关于汽车电子AEC Q101车规认证&#xff01;&#xff01;! 是一种针对分立半导体的可靠性测试认证程序&#xff0c;由汽车电子协会发布。这个认证程序主要是为了确保汽车电子产品在各种严苛的条件下能够正常工作和可靠运行。它包括了对分立半导体的可靠性、环境适应性…

安装OpenEBS,镜像总是报错ImagePullBackOff或者ErrImagePull的解决方法

按照 KubeSphere 官方文档安装 OpenEBS&#xff0c;镜像总是报错ImagePullBackOff或者ErrImagePull的解决方法 helm 有很多更换 源 的文章&#xff0c;有一些是写更换阿里云的源&#xff0c;但是阿里云的源根本没更新OpenEBS的镜像。 在网上找到1个可用的源&#xff1a; 可用的…

微服务技术栈之rabbitMQ高级(二)

我们该如何确保MQ消息的可靠性&#xff1f; 如果真的发送失败&#xff0c;有没有其它的兜底方案&#xff1f; 这些问题&#xff0c;在这一次的学习中都会找到答案。 生产者的可靠性 首先&#xff0c;我们一起分析一下消息丢失的可能性有哪些。 消息从发送者发送消息&#…

基于Springboot和Redis实现的在线选课系统

1.项目简介 1.1 介绍 毕业设计真的就是demo吗&#xff1f;作为工作前的最后一个校园项目&#xff0c;毕业设计应当尽可能的贴近企业实战&#xff0c;业务不必很复杂&#xff0c;但要做到麻雀虽小五脏俱全。本期学长跟大家一起分享如何开发一个在线选课系统&#xff0c;需求也…

Airbnb将禁止在房源内安装监控摄像头

在面临隐私问题后&#xff0c;Airbnb 最近更新了政策&#xff0c;全面禁止房东在出租屋内安装并使用室内安全监控摄像头。 修订后的政策将在全球范围内适用&#xff0c;并将于4 月 30 日生效。Airbnb 表示&#xff0c;做出这一改变是为了优先考虑客人的隐私并简化安全摄像头的规…

wxWidgets的ProcessEvent() 和QueueEvent()的用法和区别

目录 ProcessEvent() 参数 返回值 QueueEvent() 函数加入版本 参数 ProcessEvent() virtual bool wxEvtHandler::ProcessEvent (wxEvent & event) 处理事件&#xff0c;搜索事件表并调用零个或多个合适的事件处理函数。 通常&#xff0c;您的应用程序不会调用此函数…

Python算法100例-4.1 将真分数分解为埃及分数

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.补充知识点5.确定程序框架6.完整的程序 1&#xff0e;问题描述 现输入一个真分数&#xff0c;请将该分数分解为埃及分数。 2&#xff0e;问题分析 真分数&#xff08;a proper…

苹果Vision Pro即将在中日韩等九国开卖 | 百能云芯

苹果公司近期透露&#xff0c;首款混合实境&#xff08;MR&#xff09;头盔「Vision Pro」即将在今年晚些时候推向更多国家销售。虽然苹果尚未公布具体的销售细节&#xff0c;但根据最新的外媒报道&#xff0c;这款高科技产品可能即将在中国、日本、韩国等九个国家开卖&#xf…

Linux字符设备驱动开发一

linux字符设备驱动 0 驱动介绍1 字符设备驱动1.1 字符设备相关概念和结构体1.2 实现简单的字符设备模块1.3 创建字符设备1.4 总结 应用程序调用文件系统的API(open、close、read、write) -> 文件系统根据访问的设备类型&#xff0c;调用对应设备的驱动API -> 驱动对硬件进…

STM32/GD32——FreeRTOS任务管理与相关机制

芯片选型 Ciga Device — GD32F470系列 任务管理 任务处理API 操作 API 动态任务创建 xTaskCreate 任务删除 vTaskDelete 静态任务创建 vTaskCreateStatic 挂起任务 vTaskSuspend 恢复任务 vTaskResume 任务创建 BaseType_t xTaskCreate( TaskFunction_t pxTa…

叠加积分法计算电场强度

目录 电场强度 点电荷 体电荷 面电荷 ​编辑线电荷 基础知识&#xff1a;静电场--电场强度-CSDN博客 电场强度 点电荷 由于电场强度与产生电场的点电荷的电荷量成正比。场与源之间的这种线性关系可以用叠加原理来计算n个点电荷所形成的电场强度&#xff0c;即在电场中某一…

PyTorch学习笔记之激活函数篇(一)

文章目录 1、Sigmoid函数1.1 公式1.2 对应图像1.2 生成图像代码1.4 优点与不足1.5 torch.sigmoid()函数 1、Sigmoid函数 1.1 公式 Sigmoid函数的公式&#xff1a; f ( x ) 1 1 e − x f(x) \frac{1}{1e^{-x}} f(x)1e−x1​ Sigmoid函数的导函数&#xff1a; f ′ ( x ) e …

7.Java整合MongoDB—项目创建

整合MongoDB MongoDB的基本知识有所了解之后&#xff0c;我们开始着手上代码了&#xff0c;进来先来项目创建&#xff0c;如何引入mongodb&#xff0c;以及测试一下能否连接数据库。 1 新建springboot项目 其实只需要spring boot mongodb这个依赖就行&#xff0c;加那么多纯属…

ChatGLM3-6B独立部署提供HTTP服务failed to open nvrtc-builtins64_121.dll

背景 我在本地windoes部署ChatGLM3-bB&#xff0c;且希望部署后能提供HTTP server的能力。 模型部署且启动是成功了&#xff0c;但是在访问生成接口/v1/chat/completions时报错failed to open nvrtc-builtins64_121.dll。 问题详细描述 找不到nvrtc-builtins64_121.dll Runtime…

京瓷喷头官方参数

KJ4B-QA06NTB-STDV喷墨打印头专为高速单程、多程和多程水基油墨应用而设计。 它利用2656个直径为108mm的喷嘴&#xff0c;以75m/min的速度提供600dpi600dpi的分辨率。 由于采用宽印刷宽度、高密度喷嘴布置和高响应墨道设计&#xff0c;其生产效率和稳定性在纺织印刷、高速辊送印…

手机也能写前段代码,推荐一款万能编程软件

Python是一种强大的编程语言&#xff0c;广泛应用于各个领域&#xff0c;包括移动应用开发。如果你想在手机上进行Python编程&#xff0c;那么选择合适的软件工具就显得尤为重要。 一.python Pydroid 3 Pydroid 3是一款专为Android设备打造的Python IDE。它提供了一个完整的开…

【Canvas与艺术】下雪籽特效

【要点】 控制一个点的x,y坐标及下落速度&#xff0c;就能画出一个雪籽&#xff1b;创建n个雪籽&#xff0c;下雪籽的模拟效果就有了。 【效果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content…

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据 使用环境: ubantu16 QT5.7 开发板GEC6818 实现要求&#xff1a; 利用A53按键1、按键2与温湿度传感器完成QT界面动态显示温湿度记录&#xff0c;并指定温湿度记录超过指定范围&#xff0c;进行报警&#xff08;LED&#…

Grass推出Layer 2 Data Rollup

Grass推出Layer 2 Data Rollup Grass邀请链接最新资讯 Grass邀请链接 欢迎使用我的邀请码进行注册: 邀请链接 如果你还不知道注册流程&#xff1a;详见Grass: 出售闲置带宽实现被动收入 最新资讯 简讯&#xff1a;2024年3月13日&#xff0c;Grass宣布正在建立基于Solana的La…