栈后进先出....对栈的操作仅限于push和pop,我们不妨再加一个stack min_stack来维护栈的最小值列表(按照最小值更新的顺序,注意这里一定也要添加等于最小值的输入)
class MinStack {
Stack<Integer> stack = new Stack<Integer>();
Stack<Integer> min_stack = new Stack<Integer>();
public void push(int x) {
if(min_stack.isEmpty()||x<=min_stack.peek())
{
min_stack.push(x);
}
stack.push(x);
}
public void pop() {
if(!min_stack.isEmpty()&&stack.peek().equals(min_stack.peek()))
{
min_stack.pop();
}
stack.pop();
}
public int top() {
return stack.peek();
}
public int getMin() {
return min_stack.peek();
}
}
实现带最小值操作的栈
本文介绍了一种特殊的数据结构——栈,该栈除了支持常规的压栈(push)和弹栈(pop)操作外,还支持获取当前栈内的最小值。通过使用两个栈(stack和min_stack)的方式,实现了在O(1)时间内获取最小值的功能。
337

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



