225. Implement Stack using Queues

Problem:

Implement the following operations of a stack using queues.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • empty() -- Return whether the stack is empty.
    Example:
MyStack stack = new MyStack();

stack.push(1);
stack.push(2);  
stack.top();   // returns 2
stack.pop();   // returns 2
stack.empty(); // returns false

Notes:

  • You must use only standard operations of a queue -- which means only push to back, peek/pop from front, size, and is empty operations are valid.
  • Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
  • You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

思路

每次添加元素时通过循环将队列前面的元素依次添加到新添加元素的后面。

Solution (C++):

queue<int> que;
/** Initialize your data structure here. */
MyStack() {
    
}

/** Push element x onto stack. */
void push(int x) {
    que.push(x);
    for (int i = 0; i < que.size()-1; ++i) {
        que.push(que.front());
        que.pop();
    }
}

/** Removes the element on top of the stack and returns that element. */
int pop() {
    int x = que.front();
    que.pop();
    return x;
}

/** Get the top element. */
int top() {
    return que.front();
}

/** Returns whether the stack is empty. */
bool empty() {
    return que.empty();
}

性能

Runtime: 0 ms  Memory Usage: 6.4 MB

思路

Solution (C++):


性能

Runtime: ms  Memory Usage: MB

相关链接如下:

知乎:littledy

欢迎关注个人微信公众号:小邓杂谈,扫描下方二维码即可

作者:littledy
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/dysjtu1995/p/12748450.html