一、题目内容

image.png

二、题解

解法1:

思路

双栈

代码

  1. class MinStack {
  2. LinkedList<Integer> stack, minStack;
  3. /**
  4. * initialize your data structure here.
  5. */
  6. public MinStack() {
  7. stack = new LinkedList<Integer>();
  8. minStack = new LinkedList<Integer>();
  9. }
  10. public void push(int x) {
  11. stack.addLast(x);
  12. if (minStack.isEmpty() || minStack.getLast() >= x) {
  13. minStack.addLast(x);
  14. }
  15. }
  16. public void pop() {
  17. if (!stack.isEmpty()) {
  18. int temp = stack.removeLast();
  19. if (!minStack.isEmpty() && minStack.getLast() == temp) {
  20. minStack.removeLast();
  21. }
  22. }
  23. }
  24. public int top() {
  25. //可以不判空
  26. return stack.getLast();
  27. }
  28. public int min() {
  29. return minStack.getLast();
  30. }
  31. }