題目描述:
定義棧的資料結構(push/pop),請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(三者的時間複雜度都應為o(1))。
測試用例:
1)新壓入棧的數字比之前的最小值大/小
2)彈出的數字不是最小的元素/是最小的元素
解題思路:
1)借助輔助棧儲存最小值,輔助棧頂一定都當前棧的最小值
class solution elseint top()
int min()
private:
stackdata;
stackminvalue;
};
2)使用key-value對儲存
class solutionvoid 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...