算法总结——堆栈

Posted bonelee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法总结——堆栈相关的知识,希望对你有一定的参考价值。

先说stack的题目

stack的实现:链表,数组

题目:

(1)简单的:min stack,一个数组实现三个stack

(2)经典的stack问题:经典汉诺塔问题,逆波兰式计算或者产生逆波兰式,简化文件路径,验证括号对是否合法,找出最长有效括号(贪心+stack求解)

(3)涉及tree的遍历问题:tree中序遍历的迭代解法,二叉搜索树的两节点和(two sum思路)

(4)***stack排序问题***:为stack排序,从柱状图里找最大矩形(本质上类似stack排序),构造数组的maxtree(和最大矩形题目类似思路)

(5)蛋疼的其他问题:仅使用递归反转一个stack(两个递归函数,***hard***)

 

再说队列的题目

队列的实现:链表

题目:猫狗队列(链表合并),两个stack实现队列,数组滑动窗口的最大值(类似stack排序做,和柱状里找最大矩形题目解法有点类似,***hard***)

 

最后是堆的题目

题目:

(1)经典问题:合并多个有序链表,行列有序矩阵topK(k*logk解法,j+1,i+1)

(2)***需要观察总结规律的***:数组滑动窗口的最大值(使用优先级队列剔除“过期”的最大值),最大值-最小值<=num的子数组数目(滑动窗口+堆)

 

以上是关于算法总结——堆栈的主要内容,如果未能解决你的问题,请参考以下文章

算法总结深搜

干货分享Python数据结构与算法设计总结篇

二叉树算法小结

前端秋招面试总结

SLAM算法总结——经典SLAM算法框架总结

SLAM算法总结——经典SLAM算法框架总结