package 剑指offer.栈;
import java.util.Stack;
/*
最小栈
每次出栈是栈的最小的元素
需要一个容器记录当前的栈的最小值是多少。
leetcode716 最大栈
每次出栈是栈的最大的元素
*/
public class leetcode155最小栈 {
class MinStack {
Stack<Integer> xStack;
Stack<Integer> minStack;
public MinStack() {
xStack = new Stack<Integer>();
minStack = new Stack<Integer>();
minStack.push(Integer.MAX_VALUE);
}
/*
xstack : 100, 200 300 50
minstack: 100 100 100 50 ...minstack始终是记录的xstack的最小值
*/
public void push(int x) {
xStack.push(x);
//minStack始终是xStack的最小值(minStack(),x)
minStack.push(Math.min(minStack.peek(), x));
}
public void pop() {
//由于xstack要pop走 ,那么minstack()也需要pop走
xStack.pop();
minStack.pop();
}
public int top() {
//返回栈的顶端
return xStack.peek();
}
public int getMin() {
//返回栈的最小值 (因为minsatck记录是最小值)
return minStack.peek();
}
}
}
leetcode155最小栈
最新推荐文章于 2025-05-28 23:39:14 发布