侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

LeetCode 225. 用队列实现栈

Hope
2022-03-15 / 0 评论 / 0 点赞 / 242 阅读 / 724 字
温馨提示:
本文最后更新于 2022-03-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

LeetCode 225. 用队列实现栈

思路:

两个队列,一个维护栈的元素,另一个作为缓冲,如果只使用一个队列的话就是不断的记录队列的头部元素,弹出一个元素的同时,将头部元素插入。

代码:


class MyStack {
public:
    MyStack() {

    }
    
    void push(int x) {
        q1.push(x);
    }
    
    int pop() {
        while(q1.size() != 1){
            q2.push(q1.front()); 
            q1.pop();
        }
        int res = q1.front();
        q1.pop();
        //cout<<q1.size();
        while (q2.size()) q1.push(q2.front()), q2.pop();
        return res;
    }
    
    int top() {
        while(q1.size() != 1){
            q2.push(q1.front()); 
            q1.pop();
        }
        int res = q1.front();
        q2.push(res);
        q1.pop();
        
        while (q2.size()) q1.push(q2.front()), q2.pop();
        return res;
    }
    
    bool empty() {
        return q1.empty();
    }
    queue<int> q1;
    queue<int> q2;//缓存
};

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack* obj = new MyStack();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->top();
 * bool param_4 = obj->empty();
 */
0

评论区