12. 带最小值操作的栈
实现一个栈, 支持以下操作:
-
push(val) 将 val 压入栈
-
pop() 将栈顶元素弹出, 并返回这个弹出的元素
-
min() 返回栈中元素的最小值
要求 O(1) 开销.
样例
样例 2:
输入:
push(1)
min()
push(2)
min()
push(3)
min()
输出:
1
1
1
注意事项
保证栈中没有数字时不会调用 min()
public class MinStack {
Stack<Integer> stack;
int min=Integer.MAX_VALUE;
public MinStack() {
// do intialization if necessary
stack=new Stack<>();
}
/*
* @param number: An integer
* @return: nothing
*/
public void push(int number) {
// write your code here
if (min>number)min=number;
stack.push(number);
}
/*
* @return: An integer
*/
public int pop() {
// write your code here
int ret = stack.pop();
if (ret == min ) {
min = Integer.MAX_VALUE;
if ( !stack.empty()) {
for (int i = 0; i < stack.size(); i++) {
if (min > stack.get(i)) {
min = stack.get(i);
}
}
}
}
return ret;
}
/*
* @return: An integer
*/
public int min() {
// write your code here
if (stack.empty())return -1;
return min;
}
}