首页 > 其他分享 >代码随想录day10 LeetCode 232. 用栈实现队列 225. 用队列实现栈

代码随想录day10 LeetCode 232. 用栈实现队列 225. 用队列实现栈

时间:2023-01-06 20:56:37浏览次数:60  
标签:队列 随想录 int 用栈 qe push 232 size

 232. 用栈实现队列

https://leetcode.cn/problems/implement-queue-using-stacks/

利用两个栈来实现队列,一个先存储进去的,一个存储IN栈倒出来的元素,这样就可以获取到队首了

class MyQueue {
public:
    stack<int>in;
    stack<int>out;
    int size;
    MyQueue() {
        size=0;
    }

    void push(int x) {
        in.push(x);
        size++;
    }

    int pop() {
        for(int i=0;i<size;i++){
            int temp=in.top();
            in.pop();
            out.push(temp);
        }
        int num=out.top();
        out.pop();
        size--;
        for(int i=0;i<size;i++){
            int temp=out.top();
            out.pop();
            in.push(temp);
        }
        return num;
    }

    int peek() {
        for(int i=0;i<size;i++){
            int temp=in.top();
            in.pop();
            out.push(temp);
        }
        int num=out.top();
        for(int i=0;i<size;i++){
            int temp=out.top();
            out.pop();
            in.push(temp);
        }
        return num;
    }

    bool empty() {
        if(size==0)return 1;
        return 0;
    }
};

225. 用队列实现栈

https://leetcode.cn/problems/implement-stack-using-queues/

本题采用一个队列或两个队列进行模式即可,当采用一个队列时遍历出队再然后入队直到剩下最后一个人,单独拿出并不进行再次入队。

class MyStack {
public:
    queue<int>qe;
    MyStack() {

    }

    void push(int x) {
        qe.push(x);
    }

    int pop() {
        int num=qe.back();
        int size=qe.size();
        for(int i=0;i<size-1;i++){
            int temp=qe.front();
            qe.pop();
            qe.push(temp);
        }
        qe.pop();
        return num;
    }

    int top() {
        int num=qe.back();return num;
    }

    bool empty() {
        return qe.empty();
    }
};

 

标签:队列,随想录,int,用栈,qe,push,232,size
From: https://www.cnblogs.com/zhishikele/p/17031565.html

相关文章