题解 | #包含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(); }
}
```