import java.util.Stack;
public class StackWithMin {
Stack<Integer> stack = new Stack<Integer>();
Stack<Integer> min = new Stack<Integer>();
public void push(Integer val){
stack.push(val);
if(min.isEmpty() || val <= min.peek())
min.push(val);
}
public Integer pop(){
if(!stack.isEmpty() && !min.isEmpty()){
Integer val = stack.pop();
if(val == min.peek())
min.pop();
return val;
}
return Integer.MIN_VALUE;
}
public Integer getMin(){
if(!min.isEmpty())
return min.peek();
return Integer.MIN_VALUE;
}
}
[Random Coding]StackWithMin
本文介绍了一个使用Java实现的栈类,该栈不仅支持常规的push和pop操作,还能够动态地获取当前栈中的最小元素。通过两个栈的辅助,实现了在O(1)的时间复杂度下完成最小元素的查询。

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



