請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push、pop和min操作的時間複雜度必須為o(1)。
示例:
minstack minstack =
newminstack()
;minstack.
push(-
2);minstack.
push(0
);minstack.
push(-
3);minstack.
getmin()
;--> 返回 -
3.minstack.
pop();
minstack.
top();
--> 返回 0.
minstack.
getmin()
;--> 返回 -
2.
解題思路:
當要壓入棧的元素小於等於當前最小值時,在壓入x之前,先將min壓入棧,再將x賦給min;
當要彈出最小值時,彈出兩次,再將次小值賦予最小值;
class
minstack
public
void
push
(int x)
stack.
push
(x);
}public
void
pop()}
public
inttop()
public
intgetmin()
}/**
* 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.getmin();
*/
cest la vie! 面試題 03 02 棧的最小值
請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push pop和min操作的時間複雜度必須為o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 mins...
面試題 03 02 棧的最小值
請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push pop和min操作的時間複雜度必須為o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 mins...
力扣 面試題 03 02 棧的最小值 雙棧
思路 搞個雙棧,乙個棧就做正常的操作,另外乙個棧搞成單調非增的即可。有兩種實現方式。class minstack void push int x void pop int top int getmin private 正常的棧 stack int s 單調非公升棧 stack int min you...