辅助栈这是自己没想到的一个方法,还是看了提示,不多说,看代码;注释就写少了点。
class MinStack {
//public class MinStack {
private Stack<Integer> s1 = new Stack<>();
private Stack<Integer> s2 = new Stack<>();
/** initialize your data structure here. */
public MinStack() {}
public void push(int x) {
s1.push(x);
if (s2.isEmpty() || s2.peek() >= x)
s2.push(x);
}
public void pop() {
// Cannot write like the following:
// if (s2.peek() == s1.peek()) s2.pop();//==比较的是内存空间, equals比较的是它们的内容是否相等
// s1.pop();
int x = s1.pop();
if (s2.peek() == x) s2.pop();
}
public int top() {
return s1.peek();
}
public int getMin() {
return s2.peek();
}
//}
}