友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。
公众号的微信号是: jikerizhi 。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
232. Implement Queue using Stacks
Implement the following operations of a queue using stacks.
-
push(x) — Push element x to the back of queue.
-
pop() — Removes the element from in front of queue.
-
peek() — Get the front element.
-
empty() — Return whether the queue is empty.
Example:
MyQueue queue = new MyQueue();
queue.push(1);
queue.push(2);
queue.peek(); // returns 1
queue.pop(); // returns 1
queue.empty(); // returns false
Notes:
-
You must use only standard operations of a stack — which means only
push to top
,peek/pop from top
,size
, andis empty
operations are valid. -
Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
-
You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
思路分析
-
一刷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* @author D瓜哥 · https://www.diguage.com
* @since 2024-09-15 21:11:15
*/
class MyQueue {
Deque<Integer> inStack;
Deque<Integer> outStack;
public MyQueue() {
inStack = new LinkedList<>();
outStack = new LinkedList<>();
}
public void push(int x) {
inStack.push(x);
}
public int pop() {
int peek = peek();
outStack.pop();
return peek;
}
public int peek() {
if (!outStack.isEmpty()) {
return outStack.peek();
} else {
while (!inStack.isEmpty()) {
outStack.push(inStack.pop());
}
}
// TODO 这里, outStack 有可能是空啊?!
return outStack.peek();
}
public boolean empty() {
return inStack.isEmpty() && outStack.isEmpty();
}
}