剑指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(); }
总结:通过定义俩个栈,来实现获取栈中最小元素的方法,虽然成功实现了功能,但是定义了双份的空间。