1. package meituan;
    2. import java.util.Stack;
    3. /**
    4. * 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的 min 函数。
    5. * 借助辅助栈,辅助栈中存储,到当前深度时,data 栈中的最小值。
    6. */
    7. public class Solution_minstack {
    8. // 数据栈
    9. Stack<Integer> dataStack = new Stack<>();
    10. Stack<Integer> minStack = new Stack<>();
    11. Integer temp = null;
    12. // 每次压入数据栈数据与最小数据进行比较,
    13. // 如果更小,存入数据栈同时,存入辅助栈,并且最小值设置为该数据
    14. public void push(int node){
    15. dataStack.push(node);
    16. if(minStack.isEmpty()){
    17. minStack.push(node);
    18. temp = node;
    19. } else{
    20. temp = minStack.peek();
    21. if(node <= temp){
    22. minStack.push(node);
    23. temp = node;
    24. } else {
    25. // 依然是原来那个数更小,继续存入该最小值
    26. minStack.push(temp);
    27. }
    28. }
    29. }
    30. public void pop(){
    31. dataStack.pop();
    32. minStack.pop();
    33. }
    34. public int top(){
    35. return dataStack.peek();
    36. }
    37. public int min(){
    38. return minStack.peek();
    39. }
    40. }