题目

包含min函数的栈

方法一:

使用俩个栈
一个栈存储原始元素
另外一个栈存储最小元素

代码

  1. class MinStack {
  2. private Stack<Integer> A;
  3. private Stack<Integer> B;
  4. public MinStack() {
  5. A = new Stack();
  6. B = new Stack();
  7. }
  8. public void push(int x) {
  9. A.push(x);
  10. //注意这里的等于号是很重要的,如果没有等于 就会导致B的元素可能会少
  11. if(B.empty()||x <= B.peek()){
  12. B.push(x);
  13. }
  14. }
  15. public void pop() {
  16. if(A.pop().equals(B.peek())){
  17. B.pop();
  18. }
  19. }
  20. public int top() {
  21. return A.peek();
  22. }
  23. public int min() {
  24. return B.peek();
  25. }
  26. }

方法二:

使用链表