题解 | #包含min函数的栈#
包含min函数的栈
http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
import java.util.Stack;
public class Solution {
//详细题解看官方题解
// 以空间换时间: 从栈中找到最小的元素直接方法时遍历整个栈太麻烦
// 因此 引入一个辅助栈 更快速找到min值 这就是以一部分辅助空间为代价 换取时间
Stack<Integer> stack1=new Stack<Integer>();
//辅助栈
Stack<Integer> stack2=new Stack<Integer>();
public void push(int node) {
//主栈压入元素
stack1.push(node);
// 辅助栈没有元素的话 直接压入即可
if(stack2.isEmpty()){
stack2.push(node);
}else{
//判断压入的元素是否是当前栈中最小的元素
//因为栈顶元素一直是最小的 所以只需跟栈顶比较即可
int min=stack2.peek();
if(min<node){
stack2.push(min);
}else{
stack2.push(node);
}
}
}
public void pop() {
//要谈都谈
stack1.pop();
stack2.pop();
}
public int top() {
return stack1.peek();
}
public int min() {
return stack2.peek();
}
}