题目内容:
解题思路:
- 栈的特性 ----(后进先出) 队列的特性 ---- (先入先出)
- 用两个栈实现,s1压栈,s2压栈并出栈(实现先入先出的特性)
- 当s2空时,将s1的元素全部压入
解题代码:
class MyQueue {
Stack<Integer> s1;
Stack<Integer> s2;
public MyQueue() {
s1 = new Stack<>();
s2 = new Stack<>();
}
public void push(int x) {
s1.push(x);
}
public int pop() {
if(s2.empty()){
while(!s1.empty()){
s2.push(s1.pop());
}
}
return s2.pop();
}
public int peek() {
if(s2.empty()){
while(!s1.empty()){
s2.push(s1.pop());
}
}
return s2.peek();
}
public boolean empty() {
/*
if(s1.size() == 0 && s2.size() == 0){
return true;
}else{
return false;
}
*/
if(s1.empty() && s2.empty()){
return true;
}else{
return false;
}
}
}
该博客介绍了一种利用栈的后进先出(LIFO)特性来模拟队列的先入先出(FIFO)特性的方法。通过维护两个栈s1和s2,当需要出队时,如果s2为空,则将s1的所有元素转移到s2,然后从s2弹出顶部元素。这样确保了队列的正常操作。代码中展示了如何实现push、pop、peek和empty等队列操作。

1559

被折叠的 条评论
为什么被折叠?



