Stack<Integer> dataStk = new Stack<>();
Stack<Integer> minStk = new Stack<>();
public void push(int node) {
dataStk.push(node);
if (minStk.isEmpty()) {
minStk.push(node);
}else if (minStk.peek() < node){
minStk.push(minStk.peek());
}else {
minStk.push(node);
}
}
public void pop() {
if (!dataStk.isEmpty()){
dataStk.pop();
}
if (!minStk.isEmpty()){
minStk.pop();
}
}
public int top() {
return dataStk.peek();
}
public int min() {
return minStk.peek();
}
30 包含min函数的栈
最新推荐文章于 2023-07-24 10:28:56 发布
这个博客介绍了如何使用两个栈(dataStk和minStk)来同时维护一个数据栈及其对应的最小值栈。在push操作中,如果新元素小于当前最小值栈的顶部元素,则更新最小值栈。在pop操作时,两个栈同步弹出元素。top方法返回数据栈顶部元素,min方法返回最小值栈顶部元素,即当前栈中的最小值。这种方法高效地实现了在常数时间内获取栈内最小值的功能。
748

被折叠的 条评论
为什么被折叠?



