题解 | #包含min函数的栈#
包含min函数的栈
http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
JAVA
```
//push() pop() top()都是栈自带方法,
//要求输出最小栈元素,即实现min()方法。
//这里需要借助一个辅助的栈
import java.util.Stack;
public class Solution {
Stack<integer> stack_data = new Stack<integer>();
//声明辅助栈,用来装每次入栈时 现状最小的对象
Stack<integer> stack_min = new Stack<integer>();</integer></integer></integer></integer>
public void push(int node) {
stack_data.push(node);
//node < stack_min.peek() 相当于存放目前最小值到栈顶。
if(stack_min.isEmpty() || node < stack_min.peek()){
stack_min.push(node);
}else{
//更新最小栈的栈顶
//这一步是对应的L27行,如果这里不这么操作,min栈里面的最小值在27行就被出栈了。
stack_min.push(stack_min.peek());
}
}
public void pop() {
stack_data.pop();
//如果主栈stack_data有pop出栈操作,现存最小值可能就发生变化了,
//所以最小栈也出栈操作。
stack_min.pop();
}
public int top(){
return stack_data.peek();
}
public int min() {
return stack_min.peek();
}}
```
