力扣——剑指offer

力扣学习过程中有道题不能通过,自己找不到错在哪里,有人能帮忙吗?
private Deque<Integer> stack1;
private Deque<Integer> stack2;

public MinStack() {
    stack1 = new ArrayDeque<>();
    stack2 = new ArrayDeque<>();

}

//入栈,入到1栈,如果当前数值小于等于2栈的栈顶元素也入到2栈
public void push(int x) {
    stack1.push(x);
    if(stack2.isEmpty() || x <= stack2.peek()){
        stack2.push(x);
    }
}

//出栈,如果1栈栈顶元素等于2栈栈顶元素说明该数字也存入2栈了,2栈也要出栈。1栈出栈
public void pop() {
    
    if(stack1.peek() == stack2.peek()){
         stack2.pop();
    }
    stack1.pop();
}

//栈顶就是1栈栈顶
public int top() {
    return stack1.peek();

}

//最小值就是2栈栈顶
public int min() {
    return stack2.peek();
}
执行结果:

通过测试用例:14 / 19

输入:

["MinStack","此处四个push方法","pop","min","pop","min","pop","min"]

[[],[512],[-1024],[-1024],[512],此处六个[]]

输出:

[此处六个null,-1024,null,-1024,null,-1024]

预期结果:

[此处六个null,-1024,null,-1024,null,512]

题目:
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.min(); --> 返回 -2.