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

LeetCode:150. 逆波兰表达式求值

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode: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

方便人来看的是中缀表达式,放假机器看到是后缀表达式,也就是逆波兰表达式,这种表达式不需要括号,只需要按序执行即可
读到符号就从栈中弹出数字进行对应的运算,否则就入栈,注意从栈中弹数字进行运算时都是nums2_nums1

	public int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();for(String str : tokens){if("+".equals(str)){Integer num1 = stack.pop();Integer num2 = stack.pop();stack.push(num2 + num1);}else if("-".equals(str)){Integer num1 = stack.pop();Integer num2 = stack.pop();stack.push(num2 - num1);}else if("*".equals(str)){Integer num1 = stack.pop();Integer num2 = stack.pop();stack.push(num2 * num1);}else if("/".equals(str)){Integer num1 = stack.pop();Integer num2 = stack.pop();stack.push(num2 / num1);}else{stack.push(Integer.valueOf(str));}}return stack.pop();}

相关文章:

LeetCode:150. 逆波兰表达式求值

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;150. 逆波兰表达式求值 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表…...

python中向量指的是什么意思

一、向量是什么 在数学中&#xff0c;向量&#xff08;也称为欧几里得向量、几何向量、矢量&#xff09;&#xff0c;指具有大小&#xff08;magnitude&#xff09;和方向的量。它可以形象化地表示为带箭头的线段。箭头所指&#xff1a;代表向量的方向&#xff1b;线段长度&am…...

7.Vue------$refs与$el详解 ------vue知识积累

$refs 与 $el是什么&#xff1f; 作用是什么? ref&#xff0c;$refs&#xff0c;$el &#xff0c;三者之间的关系是什么&#xff1f; ref (给元素或者子组件注册引用信息) 就像你要给元素设置样式&#xff0c;就需要先给元素设定一个 class 一样&#xff0c;同理&#xff0c;…...

一个很好的直接网站操作的回测框架

1 网址 https://cn.tradingview.com/...

【电子元器件】贴片电阻的故障现象、故障原理和解决方法

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、故障现象概要 贴片电阻与其他电子元器件相比&#xff0c;虽然属于比较不容易引发故障的零部件&#xff0c;但是在过载或…...

基于Spring Boot + Vue的摄影师分享交流社区的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…...

SpringBoot项目监听端口接受数据(Netty版)

文章目录 前言服务端相关配置核心代码 客户端 前言 前言 环境&#xff1a; JDK&#xff1a;64位 Jdk1.8 SpringBoot&#xff1a;2.1.7.RELEASE Netty&#xff1a;4.1.39.Final 功能&#xff1a; 使用Netty监听端口接受客户端的数据&#xff0c;并发送数据给客户端。 服务端 …...

超标量处理器设计笔记(9) 重命名映射表、超标量处理器重命名中相关性问题

寄存器重命名 重命名映射表基于 SRAM 的重命名映射表 超标量处理器的寄存器重命名解决 RAW 相关性解决 WAW 相关性对写 RAT 进行检查&#xff08;判断哪个 ARF 写入到 RAT&#xff09;对写 ROB 进行检查&#xff08;判断&#xff09; 特殊指令处理方式 重命名映射表 重命名时…...

如何使用 Python 写入文本文件 ?

在Python编程中&#xff0c;写入文本文件是一项基本且重要的操作。 无论是生成日志文件、配置文件&#xff0c;还是进行数据输出&#xff0c;都需要用到这一技能。 下面&#xff0c;我将详细介绍如何使用Python写入文本文件&#xff0c;并提供一些实际开发中的建议和注意事项…...

07篇(附)--仿射变换矩阵

此篇献给某些 头铁 的小只因们&#xff0c;认真钻研下面的数学式吧 原理示例 首先我们以最简单的一个点的旋转为例子&#xff0c;且以最简单的情况举例&#xff0c;令旋转中心为坐标系中心O&#xff08;0&#xff0c;0&#xff09;&#xff0c;假设有一点P0(x0,y0)&#xff0…...

KubeSphere搭建单节点RocketMQ

前提环境: Docker环境 Harbor仓库(可选) 参考官方文档: 《Docker 部署 RocketMQ》 https://rocketmq.apache.org/zh/docs/quickStart/02quickstartWithDocker参考官方文档: 《RocketMQ Dashboard》 https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard/ 声…...

深度学习中损失函数(loss function)介绍

深度学习中损失函数(loss function)介绍 ​ 在深度学习的宏伟城堡中&#xff0c;损失函数扮演着国王的角色&#xff0c;它决定了模型训练的方向和目标。损失函数&#xff0c;也被称为代价函数&#xff0c;是衡量模型预测与实际结果之间差异的函数。在深度学习的训练过程中&…...

Vue3+Node中使用webrtc推流至mediamtx

前言 项目的 Web 端是 Vue3 框架&#xff0c;后端是 GO 框架。需要实现将客户端的本地摄像头媒体流推送至服务端&#xff0c;而我自己从未有媒体流相关经验&#xff0c;最初 leader 让我尝试通过 RTSP 协议推拉流&#xff0c;我的思路就局限在了 RTSP 方向。 最初使用的服务端…...

React 内置的Hook学习

useState&#xff1a;管理组件状态 useState 是一个用于在函数组件中添加状态的 Hook。它允许你在函数组件中声明一个状态变量&#xff0c;并提供一个更新该状态的方法&#xff0c;其中与组件生命周期的关系&#xff1a; 初始化&#xff1a;当组件首次渲染时&#xff0c;useS…...

Flutter Navigator2.0的原理和Web端实践

01 背景与动机 在Navigator 2.0推出之前&#xff0c;Flutter主要通过Navigator 1.0和其提供的 API&#xff08;如push(), pop(), pushNamed()等&#xff09;来管理页面路由。然而&#xff0c;Navigator 1.0存在一些局限性&#xff0c;如难以实现复杂的页面操作&#xff08;如移…...

初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容

uniapp微信小程序页面结构 首页页面代码 微信小程序模拟器 模拟器页面为空白时查了下&#xff0c;有几个说是“Hbuilder编译的时候应该编译出来一个app.js文件 但是却编译出了App.js”&#xff0c;但是我的小程序结构没问题&#xff0c;并且真机预览没有问题 真机调试 根据defi…...

【HF设计模式】03-装饰者模式

声明&#xff1a;仅为个人学习总结&#xff0c;还请批判性查看&#xff0c;如有不同观点&#xff0c;欢迎交流。 摘要 《Head First设计模式》第3章笔记&#xff1a;结合示例应用和代码&#xff0c;介绍装饰者模式&#xff0c;包括遇到的问题、遵循的 OO 原则、达到的效果。 …...

【人工智能-中级】模型部署与优化:从本地实验到云端与边缘部署

模型部署与优化:从本地实验到云端与边缘部署 在机器学习和深度学习模型训练完成后,如何高效、稳定地将模型部署到生产环境中,是实际应用中的关键环节。模型部署不仅涉及技术实现,还需要考虑性能优化、资源管理和安全性等多方面因素。本文将全面探讨模型部署与优化的相关内…...

Jenkins 编写Pipeline 简介及使用初识详解

一、Jenkins Pipeline简介 Jenkins Pipeline是Jenkins的一个重要功能,Jenkins 2.0 以上才会有,一系列 Jenkins 插件将整个持续集成用解释性代码 Jenkinsfile 来描述,它允许开发者以代码的方式定义整个持续集成和交付(CI/CD)流程,包括构建、测试、部署和监控等步骤。Jenk…...

uboot移植网络驱动过程,无法ping通mx6ull和ubuntu问题解决方案

开发板&#xff1a;mx6ull-ALPHA_V2.4 ubuntu版本&#xff1a;20.04 1.现在虚拟机设置中添加网路适配器用于开启桥接模式 2.在编辑中打开“虚拟网络编辑器” 我的电脑本身只有VMnet1和VMnet8&#xff0c;需要底下“添加网络”&#xff0c;增加这个VMnet0 &#xff0c;并且进行…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...

Qt/C++学习系列之列表使用记录

Qt/C学习系列之列表使用记录 前言列表的初始化界面初始化设置名称获取简单设置 单元格存储总结 前言 列表的使用主要基于QTableWidget控件&#xff0c;同步使用QTableWidgetItem进行单元格的设置&#xff0c;最后可以使用QAxObject进行单元格的数据读出将数据进行存储。接下来…...

年度峰会上,抖音依靠人工智能和搜索功能吸引广告主

上周早些时候举行的第五届年度TikTok World产品峰会上&#xff0c;TikTok推出了一系列旨在增强该应用对广告主吸引力的功能。 新产品列表的首位是TikTok Market Scope&#xff0c;这是一个全新的分析平台&#xff0c;为广告主提供整个考虑漏斗的全面视图&#xff0c;使他们能够…...

NLP学习路线图(三十四): 命名实体识别(NER)

一、命名实体识别(NER)是什么? 命名实体识别(Named Entity Recognition, NER)是自然语言处理中的一项关键序列标注任务。其核心目标是从非结构化的文本中自动识别出特定类别的名词性短语,并将其归类到预定义的类别中。 核心目标:找到文本中提到的命名实体,并分类。 典…...

Nginx 事件驱动理解

在做埋点采集服务的过程中&#xff0c;主要依靠openresty加lua脚本来实现采集。高并发还是主要依靠nginx来实现。而其核心就是事件驱动/多路io复用&#xff08;epoll机制&#xff09;&#xff0c;不同的linux服务器都有对应的实现方式。 而epoll机制就是&#xff0c;应用启动的…...

Digital IC Design Flow

Flow介绍 1.设计规格 架构师根据市场需求制作算法模型(Algorithm emulation)及芯片架构(Chip architecture),确定芯片设计规格书(Chip design specification) 原型验证 原型验证(Prototype Validation)通常位于产品开发流程的前期阶段,主要是在设计和开发的初步阶…...