劍指Offer 30 包含min函式的棧

2021-10-09 18:16:15 字數 542 閱讀 8322

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min、push 及 pop 的時間複雜度都是 o(1)

需要兩個棧, 乙個儲存資料, 乙個儲存每一次將元素壓入棧後的當前最小值

壓入元素時, datastack正常壓入, minstack則壓入要壓入的元素和minstack棧頂之間的最小值math.min(x, minstack.element())

彈出元素則兩個棧都正常彈出

得到棧的最小值則只需要檢視minstack的棧頂元素即可

class

minstack

public

void

push

(int x)

else

}public

void

pop()}

public

inttop()

else

}public

intmin()

else

}}

劍指Offer 30 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 首先觀察到min的時間複雜度是o 1 所以不可能是在我們呼叫min的時候再去計算棧中元素的最小值,最小值一定是提前儲存好的。其次最小值必須隨著push和pop更新,也就...

劍指offer 30 包含min函式的棧

這道題的題目可以描述為 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式,在該棧中,呼叫min,push以及pop的時間複雜度都是o 1 typedef int datatype define maxsize 100 typedef structstack void stack...

劍指offer 30 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 常規思路的問題 如果每次push對棧排序,讓整個棧保持有序狀態,實際上已經破壞了棧這個結構,而且複雜度肯定不是o 1 如果用乙個變數記錄最小值,當這個最小值被pop出去後,找不到次小值。當然你也可以找個...