题目:30. 包含min函数的栈
思路分析:
成员变量:定义两个队列stackA和stackB构造方法:给两个队列创建对象push: 添加元素e的时候,stackA正常添加,stackB需要比较一下,如果e小于等于栈顶元素的话,就添加,否则,过!!pop: 弹出的时候stackA正常弹出栈顶元素e,如果stackB的栈顶元素和e相同,那么stackB也要弹出栈顶元素;top: 直接读取stackA的栈顶元素;min: 直接读取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 min() { return stackB.peek(); } }