We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Difficulty: 简单
Related Topics: 栈, 设计, 队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
push
pop
peek
empty
实现 MyQueue 类:
MyQueue
void push(int x)
int pop()
int peek()
boolean empty()
true
false
说明:
push to top
peek/pop from top
size
is empty
示例 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
进阶:
O(1)
n
O(n)
Language: JavaScript
// 双栈 // 将一个栈当作输入栈,用于压入 push 传入的数据;另一个栈当作输出栈,用于pop和peek操作 // 每次pop或peek时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序 var MyQueue = function() { // 用来入栈 this.stack1 = [] // 用来出栈 this.stack2 = [] }; /** * @param {number} x * @return {void} */ MyQueue.prototype.push = function(x) { this.stack1.push(x) }; /** * @return {number} */ MyQueue.prototype.pop = function() { // 只要 stack2 有值,就直接return if (this.stack2.length > 0) { return this.stack2.pop() } // 当 stack2 为空的时候,将 stack1 的值放到 stack2 中 while (this.stack1.length > 0) { this.stack2.push(this.stack1.pop()) } return this.stack2.pop() }; /** * @return {number} */ MyQueue.prototype.peek = function() { let tmp = this.pop() this.stack2.push(tmp) return tmp }; /** * @return {boolean} */ MyQueue.prototype.empty = function() { return this.stack1.length === 0 && this.stack2.length === 0 }; /** * Your MyQueue object will be instantiated and called as such: * var obj = new MyQueue() * obj.push(x) * var param_2 = obj.pop() * var param_3 = obj.peek() * var param_4 = obj.empty() */
The text was updated successfully, but these errors were encountered:
No branches or pull requests
232. 用栈实现队列
Description
Difficulty: 简单
Related Topics: 栈, 设计, 队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(
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
操作是合法的。示例 1:
提示:
1 <= x <= 9
100
次push
、pop
、peek
和empty
pop
或者peek
操作)进阶:
O(1)
的队列?换句话说,执行n
个操作的总时间复杂度为O(n)
,即使其中一个操作可能花费较长时间。Solution
Language: JavaScript
The text was updated successfully, but these errors were encountered: