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

力扣:150. 逆波兰表达式求值(Python3)

题目:

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

注意:

  • 有效的算符为 '+''-''*' 和 '/' 。
  • 每个操作数(运算对象)都可以是一个整数或者另一个表达式。
  • 两个整数之间的除法总是 向零截断 。
  • 表达式中不含除零运算。
  • 输入是一个根据逆波兰表示法表示的算术表达式。
  • 答案及所有中间计算结果可以用 32 位 整数表示。

来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 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

解法:

使用栈操:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。

知识点:

1.赋值顺序:赋值顺序是从左往右,例如num2, num1 = stack.pop(), stack.pop(),栈顶元素给num2,栈次顶元素给num1 。

2.str.startswith(prefix[, start[, end]])如果prefix在str中以start开头,以end结尾,返回结果为True,否则返回False,start默认值为0。

3.eval(expression[, globals[, locals]]):expression表示表达式;globals表示变量作用域,全局命名空间,如果被提供,则必须是一个字典对象;locals表示变量作用域,局部命名空间,如果被提供,可以是任何映射对象。例如:x=7,eval( '3 * x' ),输出21。

代码:

class Solution:def evalRPN(self, tokens: List[str]) -> int:stack = []for token in tokens:if token.isdigit() or token.startswith('-') and len(token) > 1:stack.append(token)else:num2, num1 = stack.pop(), stack.pop()stack.append(int(eval(str(num1) + token + str(num2))))return int(stack[0])

相关文章:

力扣:150. 逆波兰表达式求值(Python3)

题目: 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算对象)都可以是一个整数或者另一…...

Tomcat运行日志乱码问题/项目用tomcat启动时窗口日志乱码

文章目录 一、问题描述:二、产生原因三、解决方法 一、问题描述: 项目在idea中运行时日志是正常的,用Tomcat启动时发现一大堆看不懂的文字,如 二、产生原因 产生乱码的根本原因就是编码和解码不一致,举个例子就是翻…...

Leetcode—199.二叉树的右视图【中等】

2023每日刷题(十九) Leetcode—199.二叉树的右视图 深度优先遍历实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(…...

微信小程序如何跳转到外部小程序

要在微信小程序中跳转到外部小程序,您可以使用微信小程序提供的 wx.navigateToMiniProgram 方法。以下是实现步骤: 在需要跳转的页面或组件中,编写触发跳转的逻辑,例如点击按钮: 替换 外部小程序的AppID 和 外部小程序…...

ElasticSearch集群环境搭建

1、准备三台服务器 这里准备三台服务器如下: IP地址主机名节点名192.168.225.65linux1node-1192.168.225.66linux2node-2192.168.225.67linux3node-3 2、准备elasticsearch安装环境 (1)编辑/etc/hosts(三台服务器都执行) vim /etc/hosts 添加如下内…...

[架构之路-250/创业之路-81]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业内的数据与数据库

目录 一、数据概述 1.1 数据 1.2 企业信息系统的数据 1.3 大数据 1.4 数据与程序的分离思想 1.5 数据与程序的分离做法 1.6 数据库的基本概念 1.7 企业数据来源 1.8 企业数据架构 二、常见的数据库类型 2.1 数据库分类 2.1 数据库类型 2.2 常见的数据库类型、应用…...

delaunay和voronoi图 人脸三角剖分

先获取人脸68个特征点坐标,其中使用了官方的预训练模型shape_predictor_68_face_landmarks.dat: import dlib import cv2predictor_path "shape_predictor_68_face_landmarks.dat" png_path "face.jpg"txt_path "points.tx…...

MySQL数据库之表的增删查改

目录 表的操作1.创建表创建表案例 2.查看表结构3.修改表4.删除表 表的操作 1.创建表 语法: CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明: field 表示列…...

(论文阅读11/100)Fast R-CNN

文献阅读笔记 简介 题目 Fast R-CNN 作者 Ross Girshick 原文链接 https://arxiv.org/pdf/1504.08083.pdf 目标检测系列——开山之作RCNN原理详解-CSDN博客 Fast R-CNN讲解_fast rcnn-CSDN博客 Rcnn、FastRcnn、FasterRcnn理论合集_rcnn fastrcnn fasterrcnn_沫念的博客…...

Git 标签(Tag)实战:打标签和删除标签的步骤指南

目录 前言使用 Git 打本地和远程标签(Tag)删除本地和远程 Git 标签(Tag)开源项目标签(Tag)实战打标签删除标签 结语开源微服务商城项目前后端分离项目 前言 在开源项目中,版本控制是至关重要的…...

React 底层 Fiber 架构 简单理解

一、 背景 JS 是引擎是单线程运行的;严格来说,JS 引擎和页面渲染引擎在同一渲染线程,两者互斥。那么就会遇到这样的一种情况:当前面一个任务长期霸占CPU,后面啥事也干不了,浏览器卡死,造成极差…...

使用 Python 进行自然语言处理第 4 部分:文本表示

一、说明 本文是在 2023 年 3 月为 WomenWhoCode 数据科学跟踪活动发表的系列文章中。早期的文章位于:第 1 部分(涵盖 NLP 简介)、第 2 部分(涵盖 NLTK 和 SpaCy 库)、第 2 部分(涵盖NLTK和SpaCy库&#xf…...

【LLM】大语言模型高效微调方案Lora||直击底层逻辑

大白话: DL的本质就是矩阵的乘法,就能实现LLM, 假设两个矩阵都很大,一个mxn,一个nxd的矩阵,m,n,d这几个数字可能几千甚至上万的场景,计算起来代价很大,如果我们可以small 这些数字,缩小到10甚至5这样的s…...

Qt for Android代码中输出日志

#include <QtDebug>qInfo() << "hello"; 如上&#xff0c;加入头文件&#xff08;注意&#xff1a;这里的头文件是QtDebug&#xff0c;不是QDebug&#xff0c;也不知道啥时候改的&#xff0c;也不知道有啥区别&#xff0c;先这样吧&#xff09;后使用qI…...

力扣刷题-二叉树-二叉树的递归遍历

本文讲解二叉树的前序遍历、后序遍历、中序遍历。 思路 每次写递归&#xff0c;都按照这三要素来写&#xff0c;可以保证大家写出正确的递归算法&#xff01; 确定递归函数的参数和返回值&#xff1a; 确定哪些参数是递归的过程中需要处理的&#xff0c;那么就在递归函数里加…...

VX-3R APRS发射试验

VX-3R本身是不带APRS功能的&#xff0c;不过可能通过外加TNC实现APRS功能。 有大佬已经用Arduino实现了相应的发射功能&#xff1a; https://github.com/handiko/Arduino-APRS 我要做的&#xff0c;就是简单修改一下代码&#xff0c;做一个转接板。 YEASU官方没有给出VX-3R的音…...

JAVA毕业设计109—基于Java+Springboot+Vue的宿舍管理系统(源码+数据库)

基于JavaSpringbootVue的宿舍管理系统(源码数据库)109 一、系统介绍 本系统前后端分离 本系统分为学生、宿管、超级管理员三种角色 1、用户&#xff1a; 登录、我的宿舍、申请调宿、报修申请、水电费管理、卫生检查、个人信息修改。 2、宿管&#xff1a; 登录、用户管理…...

CMU/MIT/清华/Umass提出生成式机器人智能体RoboGen

文章目录 导读1. Introduction2. 论文地址3. 项目主页4. 开源地址5. RoboGen Pipeline6. Experimental Results作者介绍Reference 导读 CMU/MIT/清华/Umass提出的全球首个生成式机器人智能体RoboGen&#xff0c;可以无限生成数据&#xff0c;让机器人7*24小时永不停歇地训练。…...

STM32:AHT20温湿度传感器驱动程序开发

注&#xff1a;温湿度传感器AHT20数据手册.pdf http://www.aosong.com/userfiles/files/AHT20%E4%BA%A7%E5%93%81%E8%A7%84%E6%A0%BC%E4%B9%A6(%E4%B8%AD%E6%96%87%E7%89%88)%20B1.pdf 一、分析AHT数据手册文档 (1).准备工作 1.新建工程。配置UART2 2.配置I2C1为I2C标准模式&…...

【Linux】第七站:vim的使用以及配置

文章目录 一、vim1.vim的介绍2.vim基本使用3.vim的命令模式常用命令4.底行模式 二、vim的配置 一、vim 1.vim的介绍 vim编辑器&#xff0c;用来文本编写&#xff0c;可以写代码 它是一个多模式的编辑器 它有很多的模&#xff0c;不过我们暂时先只考虑这三种模式 命令模式插入模…...

AutoJS与按键精灵实战:微信抢红包脚本开发指南(附完整代码)

1. 微信抢红包脚本开发入门指南 最近几年&#xff0c;手机自动化工具越来越受到开发者欢迎&#xff0c;特别是像AutoJS和按键精灵这样的工具&#xff0c;能够帮助我们完成很多重复性的手机操作。今天我要分享的是如何用这些工具开发一个微信抢红包脚本&#xff0c;这个需求在过…...

macOS玩家必备:OpenClaw+nanobot自动化办公实战

macOS玩家必备&#xff1a;OpenClawnanobot自动化办公实战 1. 为什么选择OpenClawnanobot组合&#xff1f; 作为一个长期在macOS上折腾自动化工具的老用户&#xff0c;我一直在寻找一个既能保持本地数据隐私&#xff0c;又能灵活处理办公场景的解决方案。直到遇到OpenClawnan…...

告别指标混乱:衡石科技指标管理平台的AI自治之路

指标混乱的根源在数字化时代,企业决策依赖的指标体系正面临前所未有的混乱:63%的企业存在指标定义不统一问题,58%的团队因数据口径差异导致决策冲突。这种"指标地狱"不仅消耗大量人力进行数据对齐,更直接导致战略执行偏移。某制造企业的案例极具代表性:其生产部门与财…...

SurfaceView视觉优化实战:圆角与渐变蒙层的完美结合

1. SurfaceView视觉优化的核心价值 在Android开发中&#xff0c;SurfaceView因其独特的双缓冲机制和独立的绘图线程&#xff0c;成为视频播放、游戏渲染等高性能场景的首选组件。但原生SurfaceView的直角边框和单调的呈现方式&#xff0c;常常与现代化UI设计语言格格不入。我在…...

手把手教你用LVGL 8.x实现一个会变色的电池电量控件(附完整代码)

从零构建LVGL 8.x动态电池控件&#xff1a;变色逻辑与分辨率适配实战 在智能手表、医疗设备等嵌入式场景中&#xff0c;电池电量的可视化展示从来都不只是简单的数字堆砌。想象一下&#xff0c;当用户瞥见设备屏幕时&#xff0c;一个会随着电量降低逐渐由绿转红的电池图标&…...

Qwen3-VL-2B离线运行实测:无需联网,本地搭建视觉对话机器人

Qwen3-VL-2B离线运行实测&#xff1a;无需联网&#xff0c;本地搭建视觉对话机器人 1. 引言 在当今AI技术快速发展的时代&#xff0c;视觉语言模型(Vision-Language Model)正逐渐从云端走向本地。Qwen3-VL-2B-Instruct作为一款轻量级多模态模型&#xff0c;能够在普通电脑上实…...

推荐系统优化秘籍:如何用Metric Learning解决冷启动问题?

推荐系统优化秘籍&#xff1a;如何用Metric Learning解决冷启动问题&#xff1f; 在推荐系统领域&#xff0c;冷启动问题一直是困扰算法工程师和产品经理的核心挑战之一。新用户缺乏历史行为数据&#xff0c;新商品没有足够的曝光记录&#xff0c;传统协同过滤方法在这些场景下…...

终极内存故障排查方案:Memtest86+完整应用指南

终极内存故障排查方案&#xff1a;Memtest86完整应用指南 【免费下载链接】memtest86plus memtest86plus: 一个独立的内存测试工具&#xff0c;用于x86和x86-64架构的计算机&#xff0c;提供比BIOS内存测试更全面的检查。 项目地址: https://gitcode.com/gh_mirrors/me/memte…...

Qwen2.5-7B-Instruct升级体验:从1.5B到7B,感受旗舰模型的能力跃升

Qwen2.5-7B-Instruct升级体验&#xff1a;从1.5B到7B&#xff0c;感受旗舰模型的能力跃升 1. 引言&#xff1a;从轻量到旗舰的进化之路 作为长期关注开源大模型的技术从业者&#xff0c;我见证了Qwen系列模型的快速迭代。从最初的1.5B轻量版到如今的7B旗舰版&#xff0c;Qwen…...

老Mac升级指南:使用OpenCore Legacy Patcher让旧设备焕发新生

老Mac升级指南&#xff1a;使用OpenCore Legacy Patcher让旧设备焕发新生 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果对旧款Mac的系统支持逐渐终止&#xff0…...