描述
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(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.isEmpty()){
minStack.push(number);
}
else{
minStack.min(Math.min(number, minStack.peek()));
}
}
public int pop(){
minStack.pop();
return stack.pop();
}
public int min(){
return minStack.peek();
}
}