題目:定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min、push 及 pop 的時間複雜度都是 o(1)。
示例:minstack minstack = new minstack();
minstack.push(-2);
minstack.push(0);
minstack.push(-3);
minstack.min(); --> 返回 -3.
minstack.pop();
minstack.top(); --> 返回 0.
minstack.min(); --> 返回 -2.
這題我們可以借助乙個資料棧和乙個輔助棧來實現。資料棧正常壓入和彈出資料,輔助棧用來儲存每次資料棧中的最小元素。
演算法流程:
1. 當有資料壓入時,資料棧正常壓入;輔助棧判斷當前是否為空或者壓入值是否小於當前輔助棧的棧頂元素值,若滿足,則將此元素也壓入輔助棧。
2. 若待壓入元素值大於當前輔助棧的棧頂元素值,則將當前輔助棧的棧頂元素值再次壓入輔助棧(保證兩棧元素個數相等)
3. 出棧則當兩棧都不為空時正常彈出棧頂元素
4. 若要取得棧頂元素則將資料棧的棧頂元素彈出即可
5. 若要獲得最小值則將輔助棧的棧頂元素彈出即可
**如下:
class
minstack
void
push
(int x)
}//出棧則當兩棧都不為空時正常彈出棧頂元素
void
pop()}
//若要取得棧頂元素則將資料棧的棧頂元素彈出即可
inttop()
//若要獲得最小值則將輔助棧的棧頂元素彈出即可
intmin()
};執行用時:40 ms, 在所有 c++ 提交中擊敗了96.16
%的使用者
記憶體消耗:14.7 mb, 在所有 c++ 提交中擊敗了73.15
%的使用者
js 包含min函式的棧 包含min函式的棧
目標 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 設計思路 我們要做的是在我們每次資料入棧的時候,記錄當前資料棧中最小值,並且在pop 出棧之後依然能找到最小值 方案 如果只用乙個 min 變數來儲...
包含min函式的棧
題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 n代表將要輸入的操作的步驟數。接下來有n行,每行開始有乙個字母ci。ci s 時,接下有乙個數字k,代...
包含min函式的棧
1.問題描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的函式,在該棧中呼叫min,push及pop的時間複雜度都為o 1 來自 劍指offer 2.分析 我們可以使用乙個輔助棧,專門來處理題目中得到棧的最小元素的函式時間複雜度為o 1 的這個需求。當我們壓棧時,另外乙個棧正常進行,...