描述:实现一个栈,而且这个栈里有个方法能够获取栈中最小的元素
思路:定义俩个栈,一个用来存储数据,另一个用来存取栈中最小的数,这样调用获取最小值的方法时,从保存最小值的栈中获取到该最小值。
privateStack<Integer> stackOne;
private Stack<Integer> stackMin;
// 构造方法
public Offer_01_minNumberInStack(){
// 初始化这俩个栈
stackOne = new Stack<>();
stackMin = new Stack<>();
}
// 推入栈
public void push(int a) {
stackOne.push(a);
if (stackMin.empty()) {
stackMin.push(a);
} else {
stackMin.push(stackMin.peek() > a ? a : stackMin.peek());
}
}
// 弹出
public int pop() {
stackMin.pop();
return stackOne.pop();
}
// 获取最小得元素
public int getMin() {
return stackMin.peek();
}
总结:通过定义俩个栈,来实现获取栈中最小元素的方法,虽然成功实现了功能,但是定义了双份的空间。