zoukankan      html  css  js  c++  java
  • 【LeetCode & 剑指offer刷题】栈与队列题2:9.2 用栈实现队列(232. Implement Queue using Stacks)

    【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...)

    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 toppeek/pop from topsize, 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).
     
     
     
    /*
    问题:用栈实现队列
    方法:用两个栈
    插入 s1借助辅助栈s2将元素插入到栈底
    删除 s1栈顶元素pop
    访问 访问s1栈顶元素
    判断 判断s1是否为空
    Two Stacks, push O(n), pop O(1)
    */
    class MyQueue
    {
       
    private:
        stack<int> s1; //主栈
        stack<int> s2; //辅助栈
    public:
        /** Initialize your data structure here. */
        MyQueue()
        {
           
        }
       
        /** Push element x to the back of queue. */
        void push(int x)
        {
            while (!s1.empty()) //s1转移到s2
            {
                s2.push(s1.top());
                s1.pop();
            }
            s1.push(x);//在s1中插入元素(处在栈底位置)
            while (!s2.empty()) //s2转移回s1
            {
                s1.push(s2.top());
                s2.pop();
            }
        }
       
        /** Removes the element from in front of queue and returns that element. */
        int pop()
        {
            int top_element = s1.top();
            s1.pop();
            return top_element;
        }
       
        /** Get the front element. */
        int peek()
        {
            return s1.top();
        }
       
        /** Returns whether the queue is empty. */
        bool empty()
        {
            return s1.empty();
        }
    };
    /**
     * Your MyQueue object will be instantiated and called as such:
     * MyQueue obj = new MyQueue();
     * obj.push(x);
     * int param_2 = obj.pop();
     * int param_3 = obj.peek();
     * bool param_4 = obj.empty();
     */
     
     
     
  • 相关阅读:
    POJ3667 Hotel 题解
    POJ1417 True Liars 题解
    POJ2482 Stars in Your Window 题解
    POJ1704 Georgia and Bob 题解
    矩阵运算
    P4778 Counting Swaps 题解
    poi解析office文档内容的工具类
    VMware安装Centos7超详细过程(图文)
    java后端树形菜单结构
    vue点击事件的修饰符
  • 原文地址:https://www.cnblogs.com/wikiwen/p/10225126.html
Copyright © 2011-2022 走看看