• LeetCode(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.
    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).

    分析

    用栈实现队列;

    只需要两个辅助栈,一个保存压入元素,一个保存弹出元素;当弹出元素栈空时,把所有入栈元素压入出栈;

    AC代码

    class Queue {
    public:
        // Push element x to the back of queue.
        void push(int x) {
            inStack.push(x);
        }
    
        // Removes the element from in front of queue.
        void pop(void) {
            if (outStack.empty())
            {
                while (!inStack.empty())
                {
                    outStack.push(inStack.top());
                    inStack.pop();
                }
            }
            outStack.pop();
        }
    
        // Get the front element.
        int peek(void) {
            if (outStack.empty())
            {
                while (!inStack.empty())
                {
                    outStack.push(inStack.top());
                    inStack.pop();
                }
            }
            return outStack.top();
        }
    
        // Return whether the queue is empty.
        bool empty(void) {
            if (outStack.empty() && inStack.empty())
                return true;
            return false;
        }
    
    private:
        stack<int> inStack;
        stack<int> outStack;
    };

    GitHub测试程序源码

  • 相关阅读:
    SQL处理重复数据
    ASP.NET下载网站上的地图图片(精)
    js应用大全
    vs2003运行过程中出现的一些错误汇总
    Google卫片下载(转)
    JS获取网页中HTML元素的几种方法
    8位QQ大放送
    .net 读取Xml文件并进行DropDownList数据绑定
    C# Stream 和 byte[] 之间的转换
    【C#4.0】中的dynamic与var的区别
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214757.html
Copyright © 2020-2023  润新知