面試題 03 02 棧的最小值

2021-10-24 10:34:58 字數 1052 閱讀 1527

請設計乙個棧,除了常規棧支援的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...