【Leetcode】150. 逆波兰表达式求值

今天做了一道leetcode,题目不算难,基本就是stack的入栈出栈,但我看了一圈别人的代码,感觉不够优雅,所以我想分享一下自己的写法,主要就是用Map和BiFunction优化4个if else

Java中,函数是能以对象的形式表达。例如(Integer a) - > { return a + 1; },这就是个自增的函数,我们可以将它赋值给Function<Integer, Integer> increateFunc,也就是

Function<Integer, Integer> increateFunc = (Integer a) -> { return a + 1; };

Function<Integer, Integer>,第一个泛型表示函数入参,第二个泛型表示函数返回类型。

如果函数需要两个入参,可以使用BiFunction<T, U, R>

class Solution {private static Map<String, BiFunction<Integer, Integer, Integer>> map = new HashMap<>();static {map.put("+", (a, b) -> {return a + b;});map.put("-", (a, b) -> {return a - b;});map.put("*", (a, b) -> {return a * b;});map.put("/", (a, b) -> {return a / b;});}public int evalRPN(String[] tokens) {Deque<Integer> deque = new ArrayDeque<>();for (String token : tokens) {if (map.containsKey(token)) {Integer num1 = deque.pollLast();Integer num2 = deque.pollLast();Integer ans = map.get(token).apply(num2, num1);deque.addLast(ans);}else {deque.addLast(Integer.parseInt(token));}}return deque.pollFirst();}
}

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

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

相关文章

kubectl 命令行管理K8S

目录 陈述式资源管理方式 介绍 命令 项目的生命周期 创建 kubectl create命令 发布 kubectl expose命令 更新 kubectl set 回滚 kubectl rollout 删除 kubectl delete 陈述式资源管理方式 介绍 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法…

2024年用AI自动直播有效果吗?

在如今全民直播的时代&#xff0c;做短视频和直播已经成为多数企业、实体店必备的技能之一&#xff0c;全国各个头部的品牌&#xff0c;都在纷纷加码直播&#xff0c;甚至已经开启直播矩阵的体系&#xff0c;另外中小型商家也在思考&#xff0c;如何通过抖音直播&#xff0c;让…

量子前沿:美国计算社区联盟CCC发布量子计算进展最新研报!

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨慕一 编译/排版丨沛贤 深度好文&#xff1a;1800字丨12分钟阅读 近日&#xff0c;美国计算社区联盟 (CCC) 发布了过去五年量子计算进展的最新报告。CCC还分享了美国东北大学库里计算机科…

XGB-12:在 Kubernetes 上进行分布式 XGBoost 训练

通过 Kubeflow XGBoost Training Operator 支持在 Kubernetes 上进行分布式 XGBoost 训练和批量预测。 操作步骤 为在 Kubernetes 集群上运行 XGBoost 作业&#xff0c;执行以下步骤&#xff1a; 在 Kubernetes 集群上安装 XGBoost Operator。 XGBoost Operator 旨在管理 XGB…

从零开始学Spring Boot系列-Hello World

欢迎来到从零开始学Spring Boot的旅程&#xff01;我们将从一个非常基础但重要的示例开始&#xff1a;创建一个简单的Spring Boot应用程序&#xff0c;并输出“Hello World”。 1. 环境准备 首先&#xff0c;确保你的开发环境已经安装了以下工具&#xff1a; Java Development …

word、wps插入参考文献

word 首先为参考文献自定义一个编号列表&#xff0c;开始->有序编号->定义新的编号格式&#xff0c;如下图所示&#xff1a; 在输入编号的格式中输入编号列表的形式&#xff0c;然后输入1&#xff1b;将编号样式改为1&#xff0c;2&#xff0c;3形式&#xff0c;不然就会…

dbt-core中的模型

在dbt中&#xff0c;模型&#xff08;model&#xff09;是核心概念之一&#xff0c;它代表了一个或多个SQL查询&#xff0c;这些查询定义了如何从源数据转换和构建目标数据表。除了SQL模型外,还有一个python模型,这里后面再进行探索. 以下是一些关于dbt模型的主要概念和注意事…

趣学贝叶斯定理:贝叶斯定理的先验概率、似然和后验概率(2)

4. 比较非归一化的后验概率 首先&#xff0c;我们需要求出两个后验概率的比值 P ( D ∣ H 1 ) P ( D ∣ H 2 ) \frac{P(D|H1)}{P(D|H2)} P(D∣H2)P(D∣H1)​ 接下来&#xff0c;用贝叶斯定理将其中的每一项都展开。 所以这个后验概率比值告诉我们&#xff0c;在不知道P(D)的…

PostgreSQL 与MySQL 对比使用

一、前言 博主的系统既有 用到MySQL 也有用到PostgreSQL &#xff0c;之所以用到这两种数据库&#xff0c;主要是现在都是国产替代&#xff0c;虽然说这两款数据库也不是国产的&#xff0c;但是相对开源&#xff0c;oracle是不让用了。所以现在使用比较多的就是这两个关系型数据…

Java中文乱码问题几种常见的解决方法

Java中文乱码问题通常是因为字符编码不一致导致的。以下是几种常见的解决方法&#xff1a; 1. **设置JVM编码**&#xff1a;在启动Java程序时&#xff0c;可以通过-Dfile.encodingUTF-8参数来指定JVM使用的字符编码为UTF-8。例如&#xff1a; shell java -Dfile.encodin…

基于长短期神经网络的路径跟踪,基于长短期神经网络的路径预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络的路径跟踪,基于长短期神经网络的路径预测 MATALB代码:基于长短期神经网络的路径跟踪,基于长短期神经网络的路径预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc9918351…

Docker 命令 K8S 共享卷

目录 镜像VS容器 docker常用命令 docker ps -a docker images docker build -t docker run docker rm {containerid} docker rmi {imageid} Docker Compose 服务编排 docker-compose 常用命令 K8S Pod Kubernetes 中的 Pod&#xff1a; K8S共享卷 K8S跨Pod实…

cmake 构建Qt存在多个子项目的应用

概述&#xff1a;一般在开发UI应用时候我们都会存在多个子项目&#xff0c;比如一个是主UI界面的项目&#xff0c;有些动态库的项目&#xff0c;主UI中用到子项目中的动态库&#xff0c;我们来看看如何利用cmake来构建这样的一个工程&#xff0c;方便我们在跨平台中开发(macos、…

FullCalendar日历组件:进行任务增删改,参考gitee例子修改

效果 参考路径 zxj/FullCalendar开发示例 - 码云 - 开源中国 (gitee.com) 代码 主页面&#xff1a;index.php <?php ob_start(); include(includes/session.inc); ?> <!DOCTYPE html> <html><head><title>日程管理</title><meta …

python Matplotlib Tkinter-->tab切换3

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pillow 10.1.0 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.messagebox as messagebox import …

this、闭包与作用域

this、闭包与作用域 this指针详解 函数的this关键字在JavaScript中的表现略有不同&#xff0c;此外&#xff0c;在严格模式和非严格模式之间也会有一些差别。在绝大多数情况下&#xff0c;函数的调用方式决定了this的值(运行时绑定)。 this关键字是函数运行时自动生成的一个内…

MySQL认证方法介绍

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; MySQL数据库的认证方法对于确保数据安全和维护系统完整性至关重要。在MySQL中&#xff0c;有多种认证方法可供选择&#xff0c;每种方法都有其特定的用途和配置方式。本文将详细…

2024.1.9-1.24

2024.1.9 TUE 类路径 feign远程调用 content-service的test调用media-api的如下接口&#xff0c;用来上传图片 nginx的代理 如上图&#xff0c;proxy_pass 后面跟的代理到的地址后面须有/否则不生效&#xff01;&#xff01;&#xff01;&#xff01; content-service定义…

C++的发展历史、简介及应用

文章目录 一、C的来历及诞生背景二、C的每个版本时间三、C的详细应用领域 一、C的来历及诞生背景 C是一种编程语言&#xff0c;它是在C语言的基础上发展而来的。 C的作者&#xff1a;C的创始人是丹尼斯里奇&#xff08;Dennis Ritchie&#xff09;和贝尔实验室的团队。他们在2…

医学试纸条图像处理技术

医学试纸条图像处理是一个重要的领域&#xff0c;它涉及到从医学试纸条上提取和分析信息的各种技术。这里是一些常见的工作步骤&#xff1a; 一、图像预处理&#xff1a;在处理任何图像之前&#xff0c;通常需要进行预处理步骤&#xff0c;以改善图像质量并准备后续分析。这可…