题目

image.png

代码

  1. class MinStack {
  2. /** initialize your data structure here. */
  3. private Stack<Integer> stackMin; //维护一个最小栈
  4. private Stack<Integer> stackPush; //维护一个压入栈
  5. public MinStack() {
  6. this.stackMin = new Stack<>();
  7. this.stackPush = new Stack<>();
  8. }
  9. public void push(int x) {
  10. stackPush.push(x); //压入栈 一定入栈
  11. if(stackMin.isEmpty()) { //最小栈为空无需判断,直接压入
  12. stackMin.push(x);
  13. } else {
  14. if(x <= stackMin.peek()) {
  15. stackMin.push(x); // 判断最小栈 栈顶元素 与 新压入的关系
  16. }
  17. }
  18. }
  19. public void pop() {
  20. int top = stackPush.pop();
  21. if(top == stackMin.peek()) {
  22. stackMin.pop();
  23. }
  24. }
  25. public int top() {
  26. return stackPush.isEmpty() ? 0 : stackPush.peek();
  27. }
  28. public int min() {
  29. return stackMin.isEmpty() ? 0 : stackMin.peek();
  30. }
  31. }
  32. /**
  33. * Your MinStack object will be instantiated and called as such:
  34. * MinStack obj = new MinStack();
  35. * obj.push(x);
  36. * obj.pop();
  37. * int param_3 = obj.top();
  38. * int param_4 = obj.min();
  39. */
  1. class MinStack {
  2. /** initialize your data structure here. */
  3. private Stack<Integer> stackMin;
  4. private Stack<Integer> stackPush;
  5. public MinStack() {
  6. this.stackMin = new Stack<>();
  7. this.stackPush = new Stack<>();
  8. }
  9. public void push(int x) {
  10. stackPush.push(x);
  11. if(stackMin.isEmpty()) {
  12. stackMin.push(x);
  13. } else {
  14. if(x <= stackMin.peek()) {
  15. stackMin.push(x);
  16. }
  17. }
  18. }
  19. public void pop() {
  20. if (! stackPush.isEmpty()) {
  21. if(stackPush.pop().equals(stackMin.peek())) {
  22. stackMin.pop();
  23. }
  24. }
  25. }
  26. public int top() {
  27. if(stackPush.isEmpty()) {
  28. return 0;
  29. }else return stackPush.peek();
  30. }
  31. public int min() {
  32. if(stackMin.isEmpty()) {
  33. return 0;
  34. }else return stackMin.peek();
  35. }
  36. }
  37. /**
  38. * Your MinStack object will be instantiated and called as such:
  39. * MinStack obj = new MinStack();
  40. * obj.push(x);
  41. * obj.pop();
  42. * int param_3 = obj.top();
  43. * int param_4 = obj.min();
  44. */