# 155 - Min Stack
解法一 - 兩個 stack
這個解法不算很直覺,但還是有機會想得到。一開始,我們直覺可能會想要用一個 int variable 來儲存目前 min stack 裡面的最小值,但問題來了,如果這個最小值剛好被 pop 出來了要怎麼辦?
所以我們需要一個方法來記錄最小值以外的另一個最小值,而這邊就可以用另一個 stack 來存最小值。
以下圖的例子來說,步驟分別是:
看到 -2,因為 -2 是目前最小值,所以放入 stk 跟 minStk
看到 0,因為 0 比 -2 大,所以只放入 stk 這時,minStk 裡的 -2 負責了 -2 到 0 這一段的最小值,所以即使 0 這時被 pop 出來,也不影響最小值
看到 -3,因爲 -3 比 minStk.top(也就是 -2)還要小,所以也放進 Stk 跟 MinStk
程式碼實作如下:
Last updated