劍指offer 30 包含min函式的棧 C

2021-10-06 11:26:50 字數 844 閱讀 8928

題目描述

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。

注意:保證測試中不會當棧為空的時候,對棧呼叫pop()或者min()或者top()方法。

【注意兩種實現的區別:】

思路1:用兩個棧實現,乙個棧s1用來儲存原值,乙個輔助棧s2用來儲存當前棧中的min。基本實現:

1)若s2為空,則value入棧;

2)若s1.top()class

solution

void

pop(

)int

top(

)int

min(

)private

: stack<

int> s1;

stack<

int> s2;

};思路2:用兩個棧實現,乙個棧s1用來儲存原值,乙個輔助棧s2用來儲存當前棧中的min。基本實現:

1)若s2為空,則value入棧;

2)與s2中棧頂元素比較,若s2.top()>=value,則將value壓入s2棧中;

3)每次彈棧時,先比較s1和s2的棧頂元素值,若相同,則都彈棧,否則,只彈棧s1。

class

solution

void

pop(

)int

top(

)int

min(

)private

: stack<

int> s1;

stack<

int> s2;

};

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