劍指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(); }
總結:通過定義倆個棧,來實現獲取棧中最小元素的方法,雖然成功實現了功能,但是定義了雙份的空間。