剑指offer_19_包含min函数的栈

  • 2019 年 10 月 7 日
  • 筆記

描述:实现一个栈,而且这个栈里有个方法能够获取栈中最小的元素

思路:定义俩个栈,一个用来存储数据,另一个用来存取栈中最小的数,这样调用获取最小值的方法时,从保存最小值的栈中获取到该最小值。

privateStack<Integer> stackOne;   private Stack<Integer> stackMin;   // 构造方法    public Offer_01_minNumberInStack(){        // 初始化这俩个栈        stackOne = new Stack<>();        stackMin = new Stack<>();    }    // 推入栈    public void push(int a) {        stackOne.push(a);        if (stackMin.empty()) {            stackMin.push(a);        } else {         stackMin.push(stackMin.peek() > a ? a : stackMin.peek());        }    }    // 弹出    public  int pop() {         stackMin.pop();         return stackOne.pop();    }    // 获取最小得元素    public  int getMin() {       return stackMin.peek();    }

总结:通过定义俩个栈,来实现获取栈中最小元素的方法,虽然成功实现了功能,但是定义了双份的空间。