zoukankan      html  css  js  c++  java
  • 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测试程序源码

  • 相关阅读:
    Linux系统编程 —互斥量mutex
    Linux系统编程 —读写锁rwlock
    Linux系统编程—条件变量
    Linux系统编程—信号量
    SkyWalking 源码的整体结构
    带拼音插件的索引和映射创建
    磁盘扩容后文件目录迁移步骤
    应用注册Eureka配置
    StringUtils.hasText()
    Java后台进行分页参数类封装
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214757.html
Copyright © 2011-2022 走看看