Leetcode刷题100天—面试题 03.04. 化栈为队(队列)—day13
【摘要】 前言:作者:神的孩子在歌唱大家好,我叫运智实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 – 也...
前言:
作者:神的孩子在歌唱
大家好,我叫运智

实现一个MyQueue类,该类用两个栈来实现一个队列。
示例:
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 操作)。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-queue-using-stacks-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
package 队列;
import java.util.Stack;
public class _面试题03_04_化栈为队 {
// 思路:设置两个栈,一个栈负责入栈,一个栈负责出栈
private Stack<Integer> instack;
private Stack<Integer> outstack;
public _面试题03_04_化栈为队() {
instack=new Stack<>();
outstack=new Stack<>();
}
// 入栈
public void push(int x) {
instack.push(x);
}
// 出栈
public int pop() {
// 如果出栈的栈为空
if (outstack.isEmpty()) {
// 通过循环将第一个栈的元素放入到第二个栈中
while(!instack.isEmpty()) {
outstack.push(instack.pop());
}
}
// 出栈
return outstack.pop();
}
// 获取栈顶元素
public int peek() {
// 如果出栈的栈为空
if (outstack.isEmpty()) {
// 通过循环将第一个栈的元素放入到第二个栈中
while(!instack.isEmpty()) {
outstack.push(instack.pop());
}
}
return outstack.peek();
}
// 判断是否为空
public boolean empty() {
return instack.isEmpty()&& outstack.isEmpty();
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)