leetcode 232. 用栈实现队列
【摘要】 使用栈实现队列的下列操作:
push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例:
MyQueue queue = new MyQueue();
queue.push(1); queue.push(2); queue.peek();...
使用栈实现队列的下列操作:
push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。
示例:
MyQueue queue = new MyQueue();
queue.push(1);
queue.push(2);
queue.peek(); // 返回 1
queue.pop(); // 返回 1
queue.empty(); // 返回 false
说明:
你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。
思路:
-
class MyQueue {
-
private Stack<Integer> a;// 输入栈
-
private Stack<Integer> b;// 输出栈
-
-
public MyQueue() {
-
a = new Stack<>();
-
b = new Stack<>();
-
}
-
-
public void push(int x) {
-
a.push(x);
-
}
-
-
public int pop() {
-
// 如果b栈为空,则将a栈全部弹出并压入b栈中
-
if(b.isEmpty()){
-
while(!a.isEmpty()){
-
b.push(a.pop());
-
}
-
}
-
return b.pop();
-
}
-
-
public int peek() {
-
if(b.isEmpty()){
-
while(!a.isEmpty()){
-
b.push(a.pop());
-
}
-
}
-
return b.peek();
-
}
-
-
public boolean empty() {
-
return a.isEmpty() && b.isEmpty();
-
}
-
}
-
-
-
/**
-
* Your MyQueue object will be instantiated and called as such:
-
* MyQueue obj = new MyQueue();
-
* obj.push(x);
-
* int param_2 = obj.pop();
-
* int param_3 = obj.peek();
-
* boolean param_4 = obj.empty();
-
*/
文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。
原文链接:fantianzuo.blog.csdn.net/article/details/104135240
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)