实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
注意事项
如果堆栈中没有数字则不能进行min方法的调用
如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1
public class MinStack {
private Stack<Integer> stack;
private Stack<Integer> minStack;//辅助栈
public MinStack() {
stack = new Stack<Integer>();
minStack = new Stack<Integer>();
}
public void push(int number) {
stack.push(number);//先压进栈
if (minStack.empty() == true)
minStack.push(number);
//不为空
else if (minStack.peek() >= number) {
// 这里考虑的相等的情况也会继续push
minStack.push(number);
}
}
public void push(int number){
stack.push(number);
if(minStack.empty() == true){
minStack.push(number);
}
else if(minStack.peek() >= number){
minStack.push(number);
}
}
public int pop() {
if (stack.peek().equals(minStack.peek()) ) {
minStack.pop();
}
return stack.pop();
}
public int min() {
return minStack.peek();
}
}