先说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的子数组数目(滑动窗口+堆)
原文地址:https://www.cnblogs.com/bonelee/p/10188204.html
时间: 2024-10-12 21:40:01