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

leetcode150-逆波兰表达式求值

leetcode 150
在这里插入图片描述

思路

本题使用栈来解决,因为符号是在数字的后面,所以一开始有数字出现的时候我们先入栈,后续遇到有符号,就出栈两个数字,让后出栈的数字作为前一位运算符,先出栈的数字作为后一位运算符,进行加减乘除的操作,操作完成后,需要把当前运算结果再次入栈,因为结果是会拿来做下一次运算的,需要注意的是,除法操作过程中,可能出现小数的情况,我们需要使用parseInt操作符来进行取整,另外stack在存储的时候不能存字符串,因为字符串相加会直接拼接,而不是进行加分运算,所以存储时需要转为数字存储
例子:tokens = [“2”,“1”,“+”,“3”,“*”]
1: stack = [2]
2: stack = [2,1]
3: 匹配到+, 需要计算2 + 1 = 3 stack = [3]
4: stack = [3,3]
5: 匹配到 乘法, 3*3 = 9 stack = [9]

实现

var evalRPN = function (tokens) {
    let stack = [];
    let symbols = ['+', '-', '*', '/']
    for (const item of tokens) {
        if (symbols.includes(item)) {
            const num1 = stack.pop();
            const num2 = stack.pop();
            if (item === '+') stack.push(num2 + num1)
            if (item === '-') stack.push(num2 - num1)
            if (item === '*') stack.push(num2 * num1)
            if (item === '/') stack.push(parseInt(num2 / num1))
        } else {
            stack.push(Number(item))
        }
    }
    return stack[0];
};

相关文章:

  • web入侵实战分析-常见web攻击类应急处置实验1
  • LeetCode:两两交换链表中的节点
  • 鸿蒙应用中使用本地存储实现数据共享
  • 教学资料档案管理系统
  • 跟着AI学vue第五章
  • 深度学习之自然语言处理CBOW预测及模型的保存
  • 字符串函数和结构题内存对齐
  • AURIX™ TC4x GETH对时间敏感网络的支持介绍
  • 使用 Jetty 构建 HTTPS 服务入门指南
  • 洛谷 P1140 相似基因
  • 人工智能技术-基于长短期记忆(LSTM)网络在交通流量预测中的应用
  • 从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)
  • 【Rust中级教程】1.13. 内存中的类型 Pt.1:对齐(Alignment)、布局(Layout)、`repr`属性
  • 什么是tomcat
  • 【从0做项目】Java搜索引擎(4)——性能优化~烧脑~~~
  • 50页精品PPT | 某大数据资产平台建设项目启动会材料
  • “三次握手”与“四次挥手”:TCP传输控制协议连接过程
  • C++核心指导原则: 接口部分
  • 【第一节】C++设计模式(创建型模式)-工厂模式
  • 【面试题】redis大key问题怎么解决?(key访问的次数比较多,key存的数据比较大)
  • 大风暴雨致湖南岳阳县6户房屋倒塌、100多户受损
  • 普京:“胜利日停火”已开始生效
  • 国务院安委会办公室印发通知:坚决防范遏制重特大事故发生
  • 金融政策支持稳市场稳预期发布会即将召开,潘功胜、李云泽、吴清将出席
  • 阿曼宣布美国与胡塞武装达成停火协议
  • 打造多元文旅消费场景,第四届长三角城市戏剧节启幕