栈的几个经典应用,真的绝了
创作时间:
作者:
@小白创作中心
栈的几个经典应用,真的绝了
引用
1
来源
1.
https://developer.aliyun.com/article/1588257
栈是一种常见的数据结构,其特点是先进后出。本文将介绍栈的几个经典应用场景,包括如何用栈实现队列以及对称匹配等,通过具体的代码示例帮助读者深入理解栈的应用。
一、我们了解的栈
自从最开始接触栈之后,我们就知道栈是一个先进后出的数据结构,一直到现在也没忘记这个特点。也就是说访问栈里面的元素顺序是从最近插入的开始访问。但是栈的使用场景其实了解的不多,本文就来总结下栈有哪些经典使用场景吧。
二、栈的经典应用
1、栈其实可以用来实现队列。
栈的特点是先进后出,而队列的特点是先进先出。
如果我们使用两个栈,可以实现队列的功能,双栈实现队列。
如上图,我们通过将第一个栈的数据导入第二个栈,再通过第二个栈出栈,实现队列先进先出的特性。
2、栈可以用于对称匹配,如匹配有效的括号,有效的算式表达式。
比如有一串括号字符串,([{}]),我们需要判断括号是否完全匹配。
通过将一边的括号入栈,遇到了对边的括号,需要出栈匹配。
我们可以发现,}])和出栈的括号顺序可以匹配,如果括号完全匹配,那么最终栈里面没有一个元素。
三、栈应用实战
leetcode20. 有效的括号
class Solution {
public boolean isValid(String s) {
int n = s.length();
//存储关系
Map<Character, Character> map = new HashMap<Character, Character>() {
{
put(')', '(');
put(']', '[');
put('}', '{');
}
};
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < n; i++) {
char ch = s.charAt(i);
//是右边的括号
if (map.containsKey(ch)) {
//栈顶没有匹配的左边括号
if (stack.isEmpty() || stack.peek() != map.get(ch)) {
return false;
}
stack.pop();
} else {
//左边的括号,入栈
stack.push(ch);
}
}
//栈里如果还要括号,则不匹配
return stack.isEmpty();
}
}
leetcode232. 用栈实现队列
class MyQueue {
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
public MyQueue() {
}
public void push(int x) {
stack1.push(x);
}
public int pop() {
if(!stack2.isEmpty()) {
return stack2.pop();
}
while(!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
if(!stack2.isEmpty()) {
return stack2.pop();
}
return 0;
}
public int peek() {
if(!stack2.isEmpty()) {
return stack2.peek();
}
while(!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
if(!stack2.isEmpty()) {
return stack2.peek();
}
return 0;
}
public boolean empty() {
return stack1.isEmpty() && stack2.isEmpty();
}
}
四、总结
栈的特性先进后出理解很简单,但是实际操作是有一定难度的,看完栈的应用,发现栈可以解决的问题还是非常有意思的。
热门推荐
绩点计算方法与学习成绩提升策略的全面解析与建议
基本预备费是什么意思
中国人民公安大学2025年招生简章(含招生计划、录取分数线)
泉州旅游全攻略,含交通、住宿、路线、景点、美食等
向日葵的寓意与象征:为何它成为中文文化中的独特符号
公司减资的法律依据是什么
公司注册资本金减少如何办理
买房车库面积如何计算?详解地下车库和露天停车场面积计算方法
50个成语,50个历史名人,你知道哪些?
苯污染的来源、危害及去除方法
职业和工作的区别
麒麟果:排毒果王+便秘救星?必知4大功效/热量/禁忌
鹈鹕:你不知道的白色水鸟与生物多样性
憨厚的大嘴鸟——鹈鹕
孕妇洗头的8条贴心建议及4细节
如何尊称对方项目经理呢
香港打工仔退休攻略:累积财富的关键——越早越好
PCB加工工艺流程详解:从开料到成品的21个关键步骤
深入解析每股收益(EPS):投资者必知的重要财务指标及其应用
美国两党制的起源:从联邦派到民主党和共和党
想开对公账户怎么开?小规模企业注销流程全攻略
PI金属加热膜在设计和制造过程中如何确保均匀的热分布和高效的电能转换?
安庆的美食有哪些?
以崔莺莺和霍小玉的人物形象为例,探讨封建制度下女性的悲剧形象
评书演义中哪些设定强表现弱的武将
营养监测有哪些内容,如何实施?
历史长河:过去的科技发展与变迁
科学与技术的区别
全球文化在地化的中国经验:跨学科探索与跨文化对话
APP拉新促活全攻略:从市场调研到数据分析的八大策略