150. 逆波兰表达式求值

150. 逆波兰表达式求值

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
  • 错误经验吸取

原题链接:

150. 逆波兰表达式求值

https://leetcode.cn/problems/evaluate-reverse-polish-notation/description/

完成情况:

在这里插入图片描述

解题思路:

/**
 * 逆波兰表达式求值,本质上就是一种栈的运用
 * 逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。
 *
 *
 * 可以分为数字栈,运算符栈
 * 当然也可以不构造运算符栈,直接有效的算符为 '+'、'-'、'*' 和 '/' 。四个去判断
 * //个人感觉构造运算符栈,更具有通用性,但是这道题其实不用会更快一点
 * 然后数字栈遇到了运算符栈,就出栈两个,进行对应的计算求值。
 *
 * @param tokens
 * @return
 */

参考代码:

package 代码随想录.字符串;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.HashSet;
import java.util.Set;

public class __150逆波兰表达式求值 {
    /**
     * 逆波兰表达式求值,本质上就是一种栈的运用
     * 逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。
     *
     *
     * 可以分为数字栈,运算符栈
     * 当然也可以不构造运算符栈,直接有效的算符为 '+'、'-'、'*' 和 '/' 。四个去判断
     * //个人感觉构造运算符栈,更具有通用性,但是这道题其实不用会更快一点
     * 然后数字栈遇到了运算符栈,就出栈两个,进行对应的计算求值。
     *
     * @param tokens
     * @return
     */
    public int evalRPN(String[] tokens) {
        //难点在于,一开始需要再String类型时,就去判别是数字还是字符
        //以及考虑到需要做数字上的加减乘除运算,那么应该设置为Integer类型的Stack
        Deque<Integer> numStack = new ArrayDeque<>();
        for (int i = 0; i < tokens.length; i++) {
            String token = tokens[i];
            if (token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/")) {
                int num2 = numStack.pop();
                int num1 = numStack.pop();
                if (token.equals("+")) {
                    numStack.push(num1 + num2);
                } else if (token.equals("-")) {
                    numStack.push(num1 - num2);
                } else if (token.equals("*")) {
                    numStack.push(num1 * num2);
                } else if (token.equals("/")) {
                    numStack.push(num1 / num2);
                }
            } else {
                numStack.push(Integer.parseInt(token));
            }
        }
        return numStack.pop();
    }
}

错误经验吸取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac笔记本打开Outlook提示:您需要最新的版本的Outlook才能使用此数据库

Mac笔记本打开Outlook提示&#xff1a;您需要最新的版本的Outlook才能使用此数据库 故障现象&#xff1a; 卸载旧的office安装新版的office&#xff0c;打开outlook提示&#xff1a;您需要最新的版本的outlook才能使用此数据库。 故障截图&#xff1a; 故障原因&#xff1a;…

中小企业数字化转型进程加速,CRM系统前景如何?

自疫情不断反复之后&#xff0c;中小企业数字化转型进程开始加速。作为当下最热门的企业级应用&#xff0c;CRM客户管理系统的前景还是被看好的。相比于美国企业CRM系统7成的使用率&#xff0c;中国的CRM市场还有很大的发展空间。下面来详细说说&#xff0c;CRM系统的前景如何&…

在R中通过正则化表达式提取向量中的正负数

目录 一、实现代码&#xff1a; 二、运行结果&#xff1a; 三、str_extract()函数介绍材料 一、实现代码&#xff1a; install.packages("stringr") library(stringr) # 创建一个包含正负小数的向量 vec <- c("1.5", "-2.7", "3.8&qu…

Linux系统中的静态库和共享库,以及一些计算机的基础知识

目录 1.库文件 2.静态库 3.共享库 4.静态库与共享库的区别 5.计算机基础知识 6.进程的基础知识 7.主函数的三个参数 1.库文件 1).库文件库是一组预先编译好的方法的集合;Linux系统存储库的位置一般在/lib 和 /usr/lib (64位系统/usr/lib64)库的头文件放在/usr/include 2…

纯CSS实现魔法渐变边框卡片

如图所示&#xff0c;这是一个很炫酷的卡片效果&#xff0c;关键效果在于卡片的边框呈渐变色变化着&#xff0c;在网页中有这样一个卡片相信可以极大的增强用户体验交互。本次文章将解读如何使用纯CSS实现这个炫酷的卡片效果。 基于上面的动图可以分析出以下是本次实现的主要几…

【java零基础入门到就业】第五天:java语言的发展和java语言的具体现实应用场景

文章目录 1、java 语言的发展2、java能干什么2.1 java的三大分类2.2 java能做什么1、java 语言的发展 Java 是一种广泛使用的编程语言,经历了多个阶段的发展。以下是 Java 语言的主要发展阶段: 诞生(1995 年): Java 由 Sun Microsystems(后来被 Oracle 收购)的 James …

YOLO的bounding boxes

YOLO使用了 77 网格 (SS)、2 个bounding boxes (B2) 和 20 个类别 ©。 1.YOLO将输入的图片resize成448 x 448&#xff0c;并且为 S x S&#xff08;S 7&#xff09;个grid&#xff0c;如果物体的中心落入该grid中&#xff0c;那么该grid就需要负责检测该物体。 2.对于每…

关于ASJ系列剩余电流动作继电器的功能介绍-安科瑞 蒋静

1.概述 在工业应用中&#xff0c;剩余电流继电器与外部剩余电流互感器结合使用以检测和评估接地故障电流。它们也可以与保护装置结合使用&#xff0c;以实现电路的断开&#xff0c;从而实现对线路和人员的保护。 2.剩余电流的定义以及危害 剩余电流&#xff0c;是指低压配电线…

制造业工厂MES系统中的设备管理模块

随时工厂数字化建设的大力推进&#xff0c;设备管理的效率得到了很大的提升&#xff0c;特别是作为机加工企业&#xff0c;设备是整个企业非常重要的核心资产。下面是万界星空科技MES系统中的设备管理模块介绍&#xff1a; 1、MES设备管理任务模型 制造企业总是期望设备能够在…

龙芯loongarch64安装grpcio失败解决办法

什么是gRPC gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统用protocol buffers IDL定义一个服务,指定能够被远程调用的方法及其参数和返回值类型 使用protocol buffers 编译器插件,将服务定义的.proto文件,编译成客户端和服务端的代码 …

[EFI]技嘉 Z490 VISION G i5-10500 电脑 Hackintosh 黑苹果引导文件

硬件配置 硬件型号驱动情况主板技嘉 Z490 VISION G CLPC controller Z490芯片组&#xff09;处理器英特尔 Core i5-10500 3.10GHz 六核已驱动内存16GB&#xff08; 威到DDR42655MHz8GBx 2〕已驱动硬盘SSDSC2BB150G7R (150 GB/ 国态硬盘&#xff09;已驱动显卡AMD Radeon RX 58…

2024 AIGC 规划:探索交互体验变革及 智能硬件基础设施篇

TL;DR Run LLM/Embedding on Android: https://github.com/unit-mesh/android-semantic-search-kitInference SDK&#xff1a;https://github.com/unit-mesh/inference 正文&#xff1a; 在过去的一年时间里&#xff0c;国内外大中型公司都在探索、引入了 GenAI / AIGC&#xf…

记一次FastJson报错

文章目录 报错内容原因探寻原因及解决方案 报错内容 起因是一段很普通的字符串转Java对象的代码&#xff0c;在本地和内网测试都没有问题&#xff0c;偏偏外网一跑就报错&#xff0c;错误如下: 报错的代码特别简单&#xff0c;涉及到公司代码这里用测试代码演示&#xff0c;就…

Java简介

一、Java简介 Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象…

国内外四款强大的远控使用体验:ToDesk、向日葵、AnyDesk、Microsoft 远程桌面横向比较

目录 一、引言 二、横测体验 1、ToDesk 2、向日葵 3、AnyDesk安力桌 4、Microsoft 远程桌面 三、评测总结与建议 一、引言 随着科技快速发展和数字化进程的驱动&#xff0c;远程控制软件在日常生活和工作中变得愈加广泛。无论是在家办公、技术支持还是远程教育&#xff…

使用Java实现一个简单的贪吃蛇小游戏

一. 准备工作 首先获取贪吃蛇小游戏所需要的头部、身体、食物以及贪吃蛇标题等图片。 然后&#xff0c;创建贪吃蛇游戏的Java项目命名为snake_game&#xff0c;并在这个项目里创建一个文件夹命名为images&#xff0c;将图片素材导入文件夹。 再在src文件下创建两个包&#xff0…

【rl-agents代码学习】01——总体框架

文章目录 rl-agent Get startInstallationUsageMonitoring 具体代码 学习一下rl-agents的项目结构以及代码实现思路。 source: https://github.com/eleurent/rl-agents rl-agent Get start Installation pip install --user githttps://github.com/eleurent/rl-agentsUsage…

PaaS基础建设

PaaS&#xff08;Platform-as-a-Service&#xff1a;平台即服务&#xff09;是应用程序和服务的部署平台。Paas为开发、测试和管理软件应用程序提供所需的开发环境&#xff0c;是云计算服务类型之一。 PaaS是什么&#xff1f;IaaS、SaaS、PaaS三种云服务区别 PaaS&#xff08;P…

​《水经注全国三维离线GIS系统》硬件安装教程

有些工作&#xff0c;是需要一些外在动力才能完成的。 为什么这么讲呢&#xff1f; 因为正是在客户的要求下&#xff0c;我们才撰写了《水经注全国三维离线GIS系统》的硬件安装教程&#xff0c;而且还录制了视频教程。 当用户收到货物以后&#xff0c;就可以通过本教程清点货…

深度学习AI识别人脸年龄

以下链接来自 落痕的寒假 GitHub - luohenyueji/OpenCV-Practical-Exercise: OpenCV practical exercise GitHub - luohenyueji/OpenCV-Practical-Exercise: OpenCV practical exercise import cv2 as cv import time import argparsedef getFaceBox(net, frame, conf_thresh…