带最小值操作的栈
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
主要需要解决在O(1)的复杂度下完成min()操作;引入一个辅助栈,每次进栈操作的同时,将当前最小值加入辅助栈.min()函数取扶住栈栈顶元素.
import java.util.Stack;
public class MinStack {
public Stack<Integer> min;
public Stack<Integer> data;
public MinStack() {
// do initialize if necessary
min = new Stack<Integer>();
data = new Stack<Integer>();
}
public void push(int number) {
// write your code here
if (data.empty()) {
data.push(number);
min.push(number);
} else {
int tmp = min.peek();
data.push(number);
if (number < tmp) {
min.push(number);
} else {
min.push(tmp);
}
}
}
public int pop() {
// write your code here
min.pop();
return data.pop();
}
public int min() {
// write your code here
return min.peek();
}
}