zoukankan      html  css  js  c++  java
  • [LeetCode] 232

    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.

    Notes:

      • You must use only standard operations of a stack -- which means only push to toppeek/pop from topsize, and is emptyoperations 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).

    class Queue {
    public:
      // Push element x to the back of queue.
      void push(int x) {
        m_inStack.push(x);
      }

      // Removes the element from in front of queue.
      void pop(void) {
        if (m_outStack.empty()) {
          if (m_inStack.empty()) {
            return;
          }
          while (!m_inStack.empty()) {
            int val = m_inStack.top();
            m_inStack.pop();
            m_outStack.emplace(val);
          }
        }
        m_outStack.pop();
      }

      // Get the front element.
      int peek(void) {
        if (m_outStack.empty()) {
          if (m_inStack.empty()) {
            return -1;
          }
          while(!m_inStack.empty()) {
            int val = m_inStack.top();
            m_inStack.pop();
            m_outStack.emplace(val);
          }
        }
        return m_outStack.top();
      }

      // Return whether the queue is empty.
      bool empty(void) {
        return (m_inStack.empty() && m_outStack.empty());
      }
    private:
      stack<int>m_inStack;
      stack<int>m_outStack;
    };

  • 相关阅读:
    Redis学习之(一)
    SpringMVC之学习(0)
    Node.js之Express三
    Node.js之Express二
    Node.js之Express一
    Node.js进程管理之进程集群
    Node.js进程管理之子进程
    Node.js其他模块
    Node.js进程管理之Process模块
    Node.js HTTP Server对象及GET、POST请求
  • 原文地址:https://www.cnblogs.com/shoemaker/p/4767959.html
Copyright © 2011-2022 走看看