算法训练day10 LeetCode 232

发布时间 2023-09-17 17:25:31作者: 烫烫烫汤圆

算法训练day10: LeetCode 232.225.

232.用栈实现队列

题目

232. 用栈实现队列 - 力扣(LeetCode)

题解

代码随想录 (programmercarl.com)

  • class MyQueue
    {
    public:
        stack<int> stIn;
        stack<int> stOut;
        MyQueue()
        {
        }
    
        void push(int x)
        {
            stIn.push(x);
        }
    
        int pop()
        {
            if (stOut.empty())
            {
                while (!stIn.empty())
                {
                    stOut.push(stIn.top());
                    stIn.pop();
                }
            }
            int result = stOut.top();
            stOut.pop();
            return result;
        }
    
        int peek()
        {
            int res = this->pop();
            stOut.push(res);
            return res;
        }
    
        bool empty()
        {
            return (stIn.empty() && stOut.empty());
        }
    };
    
  • 使用输入栈和输出栈。注意输出栈是否为空的判断。

225.用队列实现栈

题目:

225. 用队列实现栈 - 力扣(LeetCode)

题解:

代码随想录 (programmercarl.com)

  • class MyStack
    {
    public:
        queue<int> que;
        MyStack()
        {
        }
    
        void push(int x)
        {
            que.push(x);
        }
    
        int pop()
        {
            int size = que.size();
            while (--size)
            {
                que.push(que.front());
                que.pop();
            }
            int result = que.front();
            que.pop();
            return result;
        }
    
        int top()
        {
            return que.back();
        }
    
        bool empty()
        {
            return que.empty();
        }
    };
    

总结

​ 回顾了栈和队列的特性。用输入栈和输出栈模拟队列;以队列循环的方式模拟栈。