下面两个连接是个人leetcode栈和队列的分类。html
栈:http://www.javashuo.com/article/p-kbkwoqyp-mq.html (共40题)数组
队列:http://www.javashuo.com/article/p-mcpfyyjc-mr.html(共8题)函数
堆:http://www.javashuo.com/article/p-uuiwwbij-kn.html(共31题)spa
(1)实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操做。code
(2)怎么用数组实现栈和队列。htm
栈用一个 index, push 就是 ++index, pop就是 --indexblog
队列用三个变量,startIdx, endIdx, 和 size (有可能 endIdx < startIdx 的这种状况)递归
(3)如何用两个栈实现一个队列(lc 232),如何用两个队列实现一个栈(lc 225)队列
(4)如何仅用递归函数和栈操做逆序一个栈leetcode
(5)用栈来求解汉诺塔问题
它能解决问题就是在 O(N) 的时间复杂度内,找到离一个数数最近的左右两个比它大或者小(或者说更强的数)(找比它大的数的时候,强就是比它大,同理小也同样)。
不要求是数组,数据流也同样的。
好比说给了一个数组,找到一个数离它最近的最大的左右两个数。eg, [1, 3, 2, 0, 9, 3, 4, 6] 好比找 离 4 最近的比它大的左右两个数字就是 [9, 6]