这是LeetCode上面最小栈问题,这两段代码只有pop()方法比较时存在差异,但上面代码是正确的,下面的代码是错误的。
输出一下结果,发现原因是如果先将stack.pop()赋值给int类型的num,再比较,则是两个整数进行比较。
而下面直接进行比较,则是两个Integer类型在进行地址比较
class MinStack {
Stack<Integer> stack;
Stack<Integer> minStack;
/** initialize your data structure here. */
public MinStack() {
stack = new Stack<>();
minStack = new Stack<>();
}
public void push(int x) {
stack.push(x);
if(minStack.isEmpty() || x <= minStack.peek()) {
minStack.push(x);
}
// System.out.println("入栈:" + minStack.peek());
}
public void pop() {
// for(int i = 1; i <= minStack.size(); i++){
// System.out.println(minStack.get(minStack.size() - i));
// }
int num = stack.pop();
if(num == minStack.p