当前位置: 首页 > 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;并且进行…...

造相-Z-Image本地部署全记录:无需网络,RTX 4090专属优化方案

造相-Z-Image本地部署全记录&#xff1a;无需网络&#xff0c;RTX 4090专属优化方案 你是否曾为部署一个AI绘画模型而焦头烂额&#xff1f;面对复杂的依赖、漫长的网络下载、以及最令人头疼的“爆显存”问题&#xff0c;是不是感觉手头这张强大的RTX 4090显卡有力使不出&#…...

GridPlayer:多视频同步播放的终极解决方案

GridPlayer&#xff1a;多视频同步播放的终极解决方案 【免费下载链接】gridplayer Play videos side-by-side 项目地址: https://gitcode.com/gh_mirrors/gr/gridplayer 在数字内容爆炸的时代&#xff0c;视频创作者、教育工作者和媒体分析师经常面临需要同时处理多个视…...

终极Qwen-Agent DevOps集成指南:AI助手的持续集成与部署全流程解析

终极Qwen-Agent DevOps集成指南&#xff1a;AI助手的持续集成与部署全流程解析 【免费下载链接】Qwen-Agent Agent framework and applications built upon Qwen>3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc. 项目地址: https:/…...

AITINKR_JSON_FIELDS:面向MCU的零碎片JSON字段管理库

1. AITINKR_JSON_FIELDS 库深度解析&#xff1a;面向资源受限 IoT 设备的动态 JSON 字段管理方案在嵌入式物联网设备开发中&#xff0c;JSON 已成为事实上的数据交换标准。从传感器数据上报、OTA 配置下发&#xff0c;到设备状态同步与远程控制指令解析&#xff0c;JSON 的轻量…...

SOONet模型Git版本管理与协作开发实践指南

SOONet模型Git版本管理与协作开发实践指南 如果你正在和团队一起开发基于SOONet的项目&#xff0c;是不是经常遇到这些问题&#xff1a;谁改了哪个配置文件&#xff1f;为什么我本地跑得好好的&#xff0c;合并到主分支就出错了&#xff1f;新功能开发到一半&#xff0c;线上突…...

CVPR 2026 | 武大提出OpenDPR:基于扩散模型的开放词汇变化检测模型

点击下方卡片&#xff0c;关注“CVer”公众号AI/CV重磅干货&#xff0c;第一时间送达点击进入—>【顶会/顶刊】投稿交流群添加微信号&#xff1a;CVer2233&#xff0c;小助手拉你进群&#xff01;扫描下方二维码&#xff0c;加入CVer学术星球&#xff01;可以获得最新顶会/顶…...

设计键盘键帽个性替换件,精准适配,输出,客制化键盘低成本平替。

如何低成本获得独一无二的键帽。项目方案&#xff1a;基于Python的键盘键帽激光雕刻参数化生成系统一、 实际应用场景描述想象一下&#xff0c;你是一个 VIM 党&#xff0c;或者是一个重度使用 Figma 的设计师。你对键盘有着极致的追求&#xff1a;你想把 "ESC" 键换…...

订单状态机实战:代码校验 + SQL 幂等一次讲清

这篇不是“先写 SQL 再补代码”&#xff0c;而是从设计层面把代码层状态机和SQL 幂等更新绑定在一起。状态流转&#xff08;业务真实模型&#xff09; UNPAID -> PAID -> SHIPPED -> COMPLETED UNPAID -> CANCELED PAID -> REFUNDING -> REFUNDED SHIPPED-…...

MTK NV数据损坏 刷机、串号修复、串号修改 ,基带调试 工具教程

MTK 机型刷机工具 SP Flash Tool 最常用的 MTK 芯片刷机工具&#xff0c;支持通过 USB 线刷固件&#xff08;ROM&#xff09;。需下载与机型匹配的 Scatter 文件&#xff08;MTxxxx_Android_scatter.txt&#xff09;和固件包。操作时需进入设备的 BROM 模式&#xff08;通常通…...

2026届学术党必备的十大降重复率神器解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 减少AIGC率的关键要点是全力去降低文本里那些能够被分辨出来的机器生成特性 &#xff0c;这…...