题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。
题解:
首先想到的是用一个额外空间,存放当前桟中最小的元素,如果调用 min() 函数,直接返回该元素,但是如果桟有pop() 的操作,那么我们就无法获得之前的最小元素了。
所以需要用另一个辅助桟保存,当前桟的最小元素,每次弹出的时候,一起弹出,这样栈顶就维持着当前桟的最小元素了。
import java.util.Stack;
public class Solution {
Stack<Integer> data = new Stack();//保存每次压入的数据
Stack<Integer> min = new Stack(); //保存每次压入数据时当前data桟的最小值
public void push(int node) {
if (data.isEmpty() || node <= min.peek()) {
min.push(node);
} else {
min.push(min.peek());
}
data.push(node);
}
public void pop() {
data.pop();
min.pop();
}
public int top() {
return data.peek();
}
public int min() {
return min.peek();
}
}