Leetcode刷题100天—面试题 03.04. 化栈为队(队列)—day13
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—面试题 03.04. 化栈为队(队列)—day13相关的知识,希望对你有一定的参考价值。
前言:
作者:神的孩子在歌唱
大家好,我叫运智
实现一个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
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天—面试题 03.04. 化栈为队(队列)—day13的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—面试题 16.16. 部分排序(排序)—day58
Leetcode刷题100天—面试题 17.14. 最小K个数(优先队列)—day27