下面兩個連接是個人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]