目录
一、题目
二、思路
1.入栈的时候,入到不为空的队列,刚开始都为空指定入到一个队列
2.入栈的时候,找到不为空的队列,出size-1个元素到另一个队列中,剩下的这个元素就是出栈的元素
如图所示:
三、代码实现
class MyStack {
private Queue<Integer> qu1;
private Queue<Integer> qu2;
public MyStack() {
qu1 = new LinkedList<>();
qu2 = new LinkedList<>();
}
public void push(int x) {
if(! qu1.isEmpty()){
qu1.offer(x);
}else if(! qu1.isEmpty()){
qu2.offer(x);
}else{
qu1.offer(x);
}
}
public int pop() {
if(empty()){
return -1;
}
if(! qu1.isEmpty()){
int size = qu1.size();
for(int i = 0; i < size - 1; i++){
int val = qu1.poll();
qu2.offer(val);
}
return qu1.poll();
}
if(! qu2.isEmpty()){
int size = qu2.size();
for(int i = 0; i < size - 1; i++){
int val = qu2.poll();
qu1.offer(val);
}
return qu2.poll();
}
return -1;
}
public int top() {
if(empty()){
return -1;
}
if(! qu1.isEmpty()){
int val = -1;
int size = qu1.size();
for(int i = 0; i < size; i++){
val = qu1.poll();
qu2.offer(val);
}
return val;
}
if(! qu2.isEmpty()){
int val = -1;
int size = qu2.size();
for(int i = 0; i < size; i++){
val = qu2.poll();
qu1.offer(val);
}
return val;
}
return -1;
}
public boolean empty() {
return qu1.isEmpty() && qu2.isEmpty();
}
}