难度 简单
基本思路就是维护两个栈,具体操作的方法很多。可以在插入的时候就做反转,也可以取的时候再做反转。
执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗 :37.3 MB, 在所有 Java 提交中击败了5.33%的用户
/** Initialize your data structure here. */
Queue<Integer> queueA;
int n = 0;
public MyStack() {
queueA = new LinkedList<Integer>();
}
/** Push element x onto stack. */
public void push(int x) {
queueA.offer(x);
n++;
}
/** Removes the element on top of the stack and returns that element. */
public int pop() {
int temp = -1;
int i = 0;
Queue<Integer> queueTemp = new LinkedList<Integer>();
while(i < n-1 && !queueA.isEmpty()){
queueTemp.offer(queueA.poll());
i++;
}
temp = queueA.poll();
queueA = queueTemp;
n--;
return temp;
}
/** Get the top element. */
public int top() {
int temp = -1;
int i = 0;
Queue<Integer> queueTemp = new LinkedList<Integer>();
while(i < n && !queueA.isEmpty()){
if(i == n-1){
temp = queueA.peek();
}
queueTemp.offer(queueA.poll());
i++;
}
queueA = queueTemp;
return temp;
}
/** Returns whether the stack is empty. */
public boolean empty() {
return queueA.isEmpty();
}