12. 带最小值操作的栈
中文English
实现一个栈, 支持以下操作:
push(val)
将 val 压入栈pop()
将栈顶元素弹出, 并返回这个弹出的元素min()
返回栈中元素的最小值
要求 O(1) 开销.
样例
样例 2:
输入:
push(1)
min()
push(2)
min()
push(3)
min()
输出:
1
1
1
注意事项
保证栈中没有数字时不会调用 min()
//借助最小辅助栈,每次调用min方法,返回最小辅助栈的栈顶元素
public class MinStack {
Stack<Integer> st = new Stack<>();
Stack<Integer> minst = new Stack<>();
public MinStack() {
// do intialization if necessary
}
/*
* @param number: An integer
* @return: nothing
*/
public void push(int number) {
// write your code here
st.push(number);
if(minst.isEmpty() || number<=minst.peek()) minst.push(number);
}
/*
* @return: An integer
*/
public int pop() {
// write your code here
int temp = st.pop();
if(temp == minst.peek()) minst.pop();
return temp;
}
/*
* @return: An integer
*/
public int min() {
// write your code here
if(minst.isEmpty()) return 0;
else return minst.peek();
}
}