30 包含min函式的棧(舉例讓抽象問題具體化)

2022-08-05 02:54:14 字數 516 閱讀 4837

題目描述:

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

測試用例:

1)新壓入棧的數字比之前的最小值大/小

2)彈出的數字不是最小的元素/是最小的元素

解題思路:

1)借助輔助棧儲存最小值,輔助棧頂一定都當前棧的最小值

class solution else

int top()

int min()

private:

stackdata;

stackminvalue;

};

2)使用key-value對儲存

class solution 

void pop()

int top()

int min()

};

30 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 注意 保證測試中不會當棧為空的時候,對棧呼叫pop 或者min 或者top 方法。第一反應對棧內元素排序,把最小元素放在棧頂,但出棧操作不能保證 先出 該方案不行。第二,棧內增加乙個成員變數記錄當前棧的...

劍指 30 包含min函式的棧

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

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

維護兩個棧 棧st儲存所有元素,minst是乙個單調棧,棧頂元素為min 1.入棧 st.push x 若minst.top x或minst為空,x入棧minst 2.出棧 若minst與st棧頂元素相同,則二者都出棧,否則st出棧 3.獲取最小值 若minst不為空,返回minst棧頂元素 cla...