232. Implement Queue using Stacks

Problem:

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, and is 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).

思路

使用两个栈,入栈和出栈。当元素插入队列时,将元素放入入栈。如果要删除或者返回队头元素,因为队头元素位于入栈的底部,所以需要将入栈中的元素依次放入出栈,则出栈中的元素顺序就和队列顺序相同了,后面插入的元素继续放入入栈,直到出栈中的元素都弹出时再重复上述操作。

Solution (C++):

stack<int> input, output;
/** Initialize your data structure here. */
MyQueue() {

}

/** Push element x to the back of queue. */
void push(int x) {
    input.push(x);
}

/** Removes the element from in front of queue and returns that element. */
int pop() {
    int x = peek();
    output.pop();
    return x;
}

/** Get the front element. */
int peek() {
    if (output.empty()) {
        while (!input.empty()) {
            output.push(input.top());
            input.pop();
        }
    }
    return output.top();
}

/** Returns whether the queue is empty. */
bool empty() {
    return input.empty() && output.empty();
}

性能

Runtime: 0 ms  Memory Usage: 6.6 MB

思路

Solution (C++):


性能

Runtime: ms  Memory Usage: MB

原文链接: https://www.cnblogs.com/dysjtu1995/p/12747607.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    232. Implement Queue using Stacks

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/343625

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午2:12
下一篇 2023年3月2日 上午2:12

相关推荐