当前位置:网站首页>leetcode 232. Implement Queue using Stacks
leetcode 232. Implement Queue using Stacks
2022-08-08 06:14:00 【okokabcd】
一、题目大意
标签: 栈和队列
https://leetcode.cn/problems/implement-queue-using-stacks
请你仅使用两个栈实现先入先出队列.队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现 MyQueue 类:
void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false
说明:
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的.
你所使用的语言也许不支持栈.你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可.
示例 1:
输入:
[“MyQueue”, “push”, “push”, “peek”, “pop”, “empty”]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 1, 1, false]
解释:
MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1]
myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
myQueue.peek(); // return 1
myQueue.pop(); // return 1, queue is [2]
myQueue.empty(); // return false
提示:
- 1 <= x <= 9
- 最多调用 100 次 push、pop、peek 和 empty
- 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)
进阶:
你能否实现每个操作均摊时间复杂度为 O(1) 的队列?换句话说,执行 n 个操作的总时间复杂度为 O(n) ,即使其中一个操作可能花费较长时间.
二、解题思路
用两个栈来实现一个队列:Because it needs to get the first-in, first-out result,So the array must be flipped through an extra stack.This flipping process can be done both while inserting,It can also be done while taking a value.
The following addresses the completion of the flipping process while inserting.
三、解题方法
3.1 Java实现
class MyQueue {
Stack<Integer> stackA;
Stack<Integer> stackB;
public MyQueue() {
stackA = new Stack<>();
stackB = new Stack<>();
}
public void push(int x) {
if (stackA.isEmpty()) {
stackA.push(x);
return;
}
while (!stackA.isEmpty()) {
stackB.push(stackA.pop());
}
stackB.push(x);
while (!stackB.isEmpty()) {
stackA.push(stackB.pop());
}
}
public int pop() {
return stackA.pop();
}
public int peek() {
return stackA.peek();
}
public boolean empty() {
return stackA.isEmpty();
}
}
四、总结小记
- 2022/8/7 Have a question on the weekend
边栏推荐
猜你喜欢

Completed - desktop interactive wizard design based on facial expressions (share the results, attach the data set of facial expressions and the yolov5 model trained by yourself and the interactive int

Disadvantages of flex layout

【图像处理】matlab基础图像处理 | 图像载入、图像添加噪声、图像滤波、图像卷积

How many times the neural network is generally trained, the neural network training time is too long

神经网络参数量和计算量,神经网络是参数模型吗

Unity mouse cursor usage learning

postman---postman parameterization

clue binary tree

什么是 DevOps?看这一篇就够了!

APISIX Ingress v1.5-rc1 发布
随机推荐
使用 Zap 和 W3af 进行 Web 应用程序漏洞评估
stack-queue
毕设——基于人脸表情的桌面交互精灵设计(分享一下成果,附上人脸表情的数据集和自己训练出来yolov5模型以及基于PYQT5运行yolov5的交互界面)
Tensorboard的使用 ---- SummaryWriter类(pytorch版)
Introduction to uvm
Distributed Transactions: A Reliable Message Eventual Consistency Scheme
Promise的使用与async/await的使用
Postman显示验证码图片(base64字符串)
28. Anomaly detection
让你的应用完美适配平板
数字IC设计中为什么要避免锁存器(Latches)
Efficient and beautiful scrolling component Slivers of Flutter tutorial (tutorial includes source code)
CAP定理实例分析
什么是 DevOps?看这一篇就够了!
自动化工具
卷积神经网络 图像识别,卷积神经网络 图像处理
神经网络参数量和计算量,神经网络是参数模型吗
The pta patching simple graph theory
Validated plan
String title parsing