劍指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();    }

總結:通過定義倆個棧,來實現獲取棧中最小元素的方法,雖然成功實現了功能,但是定義了雙份的空間。