劍指offer 30 包含min函式的棧

2021-10-06 17:03:29 字數 503 閱讀 4051

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

)o(1)

o(1)

單調棧

我們除了維護基本的棧[s]結構之外,還需要維護乙個單調棧[s_min],來實現返回最小的操作

向棧中壓入乙個數時

該數 <= 單調棧的棧頂元素【壓入該數】,否則,不壓人

從棧中彈出乙個數時

該數 = 單調棧的棧頂元素【同時將單調棧的棧頂元素彈出】

class solution ;
向棧中壓入乙個數時

該數 <= 單調棧的棧頂元素【壓入該數】,否則,【壓入棧s_min頂元素】

從棧中彈出乙個數時

同時彈出 棧 s 和 s_min 棧頂元素

class solution ;

劍指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出去後,找不到次小值。當然你也可以找個...