![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1a1972a033ac660160750f9366b33243.png)
栈
public class StackMin {
Deque<Integer> Stack;
Deque<Integer> minStack;
public StackMin() {
Stack=new LinkedList<>();
minStack=new LinkedList<>();
minStack.push(Integer.MAX_VALUE);
}
public void push(int x) {
Stack.push(x);
minStack.push(Math.min(x,minStack.peek()));
}
public void pop() {
Stack.pop();
minStack.pop();
}
public int top() {
return Stack.peek();
}
public int getMin() {
return minStack.peek();
}
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a39f01d622ad175b233cd4451d65f9b0.png)
学以致用
- 获取栈堆中最小的元素
-1、新建一个栈Deque<Integer> minStack=new LinkedList<>();
-2、堆顶放入一个无限大的数minStack.push(Integer.MAX_VALUE);
-3、每一次与栈顶元素比较,并且将较小的元素放入堆顶minStack.push(Math.min(x,minStack.peek()));
-4、minStack.peek()
就可以获取到最小元素