一、算法题
232.用栈实现队列
class MyQueue {
Stack<Integer> in;
Stack<Integer> out;
public MyQueue() {
in=new Stack<>();
out=new Stack<>();
}
public void push(int x) {
in.push(x);
}
public int pop() {
popinout();
return out.pop();
}
public int peek() {
popinout();
return out.peek();
}
public boolean empty() {
if(in.isEmpty()&&out.isEmpty()){
return true;
}
return false;
}
public void popinout(){
if(out.isEmpty()){
while (!in.isEmpty()) {
out.push(in.pop());
}
}
}
}
- 在用栈实现队列时,对于队列来说,刚加入一个元素然后进行peek或者pop操作,被操作的那个数就是刚刚push进来的那个数
225. 用队列实现栈
class MyStack {
Queue<Integer> que;
public MyStack() {
que=new LinkedList<>();
}
public void push(int x) {
que.add(x);
int size=que.size();
while(size>1){
que.add(que.poll());
size--;
}
}
public int pop() {
return que.poll();
}
public int top() {
return que.peek();
}
public boolean empty() {
return que.isEmpty();
}
}
- 在加入元素到队列时就改变元素在队列中的顺序,模拟栈