包含min函数的栈
题目
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1).
思路
我们利用一个辅助栈,每次将要插入的元素和栈顶的元素进行比较,辅助栈中插入两者的最小值。
代码
public class MinStack{
Stack<Integer> data = new Stack<Integer>();
Stack<Integer> min = new Stack<Integer>();
public void push(int num){
data.push(num);
if(min.size()==0||num<min.peek()){
min.push(num);
}
else {
min.push(min.peek());
}
}
public int pop(){
if(data.size() > 0 && min.size() > 0){
data.pop();
min.pop();
}
}
public int min(){
if(data.size() > 0 && min.size() > 0){
min.peek();
}
}
}