mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
更新 栈与队列总结 排版格式修复
This commit is contained in:
@ -3,9 +3,9 @@
|
||||
<img src="../pics/训练营.png" width="1000"/>
|
||||
</a>
|
||||
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
|
||||
# 栈与队列总结篇
|
||||
|
||||
|
||||
# 栈与队列的理论基础
|
||||
## 栈与队列的理论基础
|
||||
|
||||
首先我们在[栈与队列:来看看栈和队列不为人知的一面](https://programmercarl.com/栈与队列理论基础.html)中讲解了栈和队列的理论基础。
|
||||
|
||||
@ -37,9 +37,9 @@
|
||||
|
||||
**一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时在去弹出元素就是栈的顺序了。**
|
||||
|
||||
# 栈经典题目
|
||||
## 栈经典题目
|
||||
|
||||
## 栈在系统中的应用
|
||||
### 栈在系统中的应用
|
||||
|
||||
如果还记得编译原理的话,编译器在 词法分析的过程中处理括号、花括号等这个符号的逻辑,就是使用了栈这种数据结构。
|
||||
|
||||
@ -59,7 +59,7 @@ cd a/b/c/../../
|
||||
|
||||
**所以数据结构与算法的应用往往隐藏在我们看不到的地方!**
|
||||
|
||||
## 括号匹配问题
|
||||
### 括号匹配问题
|
||||
|
||||
在[栈与队列:系统中处处都是栈的应用](https://programmercarl.com/0020.有效的括号.html)中我们讲解了括号匹配问题。
|
||||
|
||||
@ -75,23 +75,23 @@ cd a/b/c/../../
|
||||
|
||||
这里还有一些技巧,在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单的多了!
|
||||
|
||||
## 字符串去重问题
|
||||
### 字符串去重问题
|
||||
|
||||
在[栈与队列:匹配问题都是栈的强项](https://programmercarl.com/1047.删除字符串中的所有相邻重复项.html)中讲解了字符串去重问题。
|
||||
1047. 删除字符串中的所有相邻重复项
|
||||
|
||||
思路就是可以把字符串顺序放到一个栈中,然后如果相同的话 栈就弹出,这样最后栈里剩下的元素都是相邻不相同的元素了。
|
||||
|
||||
## 逆波兰表达式问题
|
||||
### 逆波兰表达式问题
|
||||
|
||||
在[栈与队列:有没有想过计算机是如何处理表达式的?](https://programmercarl.com/0150.逆波兰表达式求值.html)中讲解了求逆波兰表达式。
|
||||
|
||||
本题中每一个子表达式要得出一个结果,然后拿这个结果再进行运算,那么**这岂不就是一个相邻字符串消除的过程,和[栈与队列:匹配问题都是栈的强项](https://programmercarl.com/1047.删除字符串中的所有相邻重复项.html)中的对对碰游戏是不是就非常像了。**
|
||||
|
||||
|
||||
# 队列的经典题目
|
||||
## 队列的经典题目
|
||||
|
||||
## 滑动窗口最大值问题
|
||||
### 滑动窗口最大值问题
|
||||
|
||||
在[栈与队列:滑动窗口里求最大值引出一个重要数据结构](https://programmercarl.com/0239.滑动窗口最大值.html)中讲解了一种数据结构:单调队列。
|
||||
|
||||
@ -119,7 +119,7 @@ cd a/b/c/../../
|
||||
我们用deque作为单调队列的底层数据结构,C++中deque是stack和queue默认的底层实现容器(这个我们之前已经讲过),deque是可以两边扩展的,而且deque里元素并不是严格的连续分布的。
|
||||
|
||||
|
||||
## 求前 K 个高频元素
|
||||
### 求前 K 个高频元素
|
||||
|
||||
在[栈与队列:求前 K 个高频元素和队列有啥关系?](https://programmercarl.com/0347.前K个高频元素.html)中讲解了求前 K 个高频元素。
|
||||
|
||||
@ -143,7 +143,7 @@ cd a/b/c/../../
|
||||
|
||||
所以排序的过程的时间复杂度是$O(\log k)$,整个算法的时间复杂度是$O(n\log k)$。
|
||||
|
||||
# 总结
|
||||
## 总结
|
||||
|
||||
在栈与队列系列中,我们强调栈与队列的基础,也是很多同学容易忽视的点。
|
||||
|
||||
@ -162,3 +162,4 @@ cd a/b/c/../../
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
</a>
|
||||
|
||||
|
Reference in New Issue
Block a user