JS算法探险之栈(Stack)

本文探讨了栈在JavaScript算法中的应用,包括后缀表达式、小行星碰撞、判断括号正确性、每日温度问题以及直方图最大面积的解决。通过实例介绍了如何利用栈的后进先出特性解决这些算法问题,提供了详细的代码实现。
摘要由CSDN通过智能技术生成

前额叶是大脑控制中枢。> 人类是所有动物中,唯一能够自主控制自己的欲望、情绪和冲动的动物,能够为了将来更大的利益而延迟满足当下的需求。

今天,我们继续探索JS算法相关的知识点。我们来谈谈关于{栈| Stack}的相关知识点和具体的算法。

如果,想了解其他数据结构的算法介绍,可以参考我们已经发布的文章。如下是算法系列的往期文章。

文章list

好了,天不早了,干点正事哇。


文章概要

0.知识点简讲
1.后缀表达式
2.小行星碰撞
3.判断括号的正确性
4.每日温度
5.直方图最大面积

知识点简讲

栈是个啥

栈是一种遵从后进先出LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底

栈也被用在编程语言的_编译器_和内存中保存变量、方法调用等,也被用于_浏览器历史记录_(浏览器的返回按钮)。

而在前端,Stack耳熟能详的功能就是调用栈,调用栈就是用来管理函数调用关系的一种数据结构,是 JavaScript 引擎追踪函数执行的一个机制。

还有一个比较重要的用处就是在解析器中,无论是HTML/Vue/JavaScript,在生成对应的AST的时候,针对Token进行匹配处理。此时,就可以利用Stack后进先出的特性,进行匹配处理。

解析HTML生成的AST

解析Vue模板生成的AST

关于调用栈的详细介绍,可以翻阅我们之前文章。这里就不在赘述。

栈的应用(算法方向)

在一些题目中,数据保存的顺序使用顺序相反,即最后保存的数据最先使用,这与栈的_后进先出_特性契合,可以将数据保存到栈中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值