剑指offer-包含min函数的栈

时间:2022-04-10 03:34:32

题目描述
  定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
题目分析
  一个栈保存当前栈中的原色,其功能和一个正常栈没有区别;另一个栈用于保存每一步的最小值

public class 包含min函数的栈 {

public 包含min函数的栈() {
this.stackData=new Stack<Integer>();
this.stackMin=new Stack<Integer>();
}
public static void main(String[] args) {

}
public void push(int node) {
stackData.push(node);
if(stackMin.isEmpty())
stackMin.push(node);
else if(node<=this.min())
stackMin.push(node);
}

public void pop() {
if(stackData.isEmpty())
throw new RuntimeException("stack is empty");
int value=stackData.pop();
if(value==this.min())
this.stackMin.pop();
}

public int top() {
return stackData.peek();
}

public int min() {
return stackMin.peek();
}

private Stack<Integer> stackData;
private Stack<Integer> stackMin;
}