【力扣Hot100】155. 最小栈

题目:最小栈

【力扣Hot100】155. 最小栈_第1张图片

题目要求写一个MinStack的数据结构,实现push,pop,top,getMin等方法;

思路分析:

  1. 成员变量:定义两个队列stackAstackB
  2. 构造方法:给两个队列创建对象
  3. push: 添加元素e的时候,stackA正常添加,stackB需要比较一下,如果e小于等于栈顶元素的话,就添加,否则,过!!
  4. pop: 弹出的时候stackA正常弹出栈顶元素e,如果stackB的栈顶元素和e相同,那么stackB也要弹出栈顶元素;
  5. top: 直接读取stackA的栈顶元素;
  6. getMin: 直接读取stackB的栈顶元素;
class MinStack {
    //成员变量
    private LinkedList<Integer> stackA;
    private LinkedList<Integer> stackB;
    //构造方法
    public MinStack() {
        stackA = new LinkedList<>();
        stackB = new LinkedList<>();
    }   
    //成员方法
    public void push(int x) {
        stackA.push(x);
        if(stackB.isEmpty() || x <= stackB.peek()){
            stackB.push(x);
        }
    }    
    public void pop() {
        int e = stackA.pop();
        if(!stackB.isEmpty() && e == stackB.peek()){
            stackB.pop();
        }
    }   
    public int top() {
        return stackA.peek();
    }
    public int getMin() {
        return stackB.peek();
    }
}

你可能感兴趣的:(力扣Hot100,栈,数据结构,java)