思路:使用輔助棧。
棧a實現正常的push,pop,top函式。
棧b在每次棧apush的時候判斷,棧頂元素是否》=要push進棧a的元素。
注意的點:
1.
if(b.empty() || b.peek() >=x)此處必須要》=,因為在》情況下,push(0),push(0),pop(),棧b就沒有元素了。
2.pop()函式中,a.pop()必須寫在if迴圈外,因為不管怎麼樣都要執行。(當時寫迴圈裡了)
3.為什麼不用 == 而用 equals
參考面試題30. 包含min函式的棧
classminstack
public
void push(int
x)
public
void
pop()
public
inttop()
public
intmin()
}/**
* your minstack object will be instantiated and called as such:
* minstack obj = new minstack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.min();
*/
面試題30 包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 思路 利用乙個輔助棧來存放最小值 棧 3,4,2,1 輔助棧 3,3,2,1 每入棧一次,就與輔助棧頂比較大小,如果小就入棧,如果大就入棧當前的輔助棧頂 當出棧時,輔...
面試題30 包含min函式的棧
一 題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 二 關鍵 1.新增輔助棧,每次新增乙個元素,就往輔助棧中新增當前最小的那個元素。三 解釋 四 pragma once include include tem...
面試題30 包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 minstack.pu...