因为之前比较忙期末考试=-= 所以断了打卡 现在 重新补起来~!

232.用栈实现队列

题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/

看到题目的第一想法:因为一刷过,所以知道用两个栈来实现第一个栈用来存储

第二个栈就用来 将第一个栈的存储顺序变为队列的顺序

实现中遇到的困难:在实现pop的时候在想 如果转换到第二个栈之后如果还要添加怎么办

没有想到在删除之后 重新把第二个栈里面的元素放到第一个栈当中.

看到代码随想录之后的想法:进行还原 每一次要输出的时候再转化为队列(移到第二个栈当中)

class MyQueue{        stack TheFirstStack;        stack TheSecoundStack;public:    MyQueue()    {    }    void push(int x)    {        TheFirstStack.push(x);    }    int pop()    {        while(!TheFirstStack.empty())        {            auto tmp=TheFirstStack.top();            TheFirstStack.pop();            TheSecoundStack.push(tmp);        }        auto del=TheSecoundStack.top();        TheSecoundStack.pop();        while(!TheSecoundStack.empty())        {            auto tmp=TheSecoundStack.top();            TheSecoundStack.pop();            TheFirstStack.push(tmp);        }        return del;    }    int peek()    {        while(!TheFirstStack.empty())        {            auto tmp=TheFirstStack.top();            TheFirstStack.pop();            TheSecoundStack.push(tmp);        }        auto tmp=TheSecoundStack.top();        while(!TheSecoundStack.empty())        {            auto tmp=TheSecoundStack.top();            TheSecoundStack.pop();            TheFirstStack.push(tmp);        }        return tmp;    }    bool empty()    {        if(TheFirstStack.empty())        {            return true;        }        return false;    }};

225.用队列实现栈

题目链接:https://leetcode.cn/problems/implement-stack-using-queues/

看到题目的第一想法:因为一刷过.看到题目是要求使用两个队列,就想到用两个队列

实现中遇到的困难:因为做了第一个题陷入逻辑闭环,不知道怎么去实现

其实就是少循环队列大小一次,然后最后面的那个就是要移除的值.

看到代码随想录之后的想法:明白了如何实现

 1 class MyStack 2 { 3 public: 4     queue<int> theFisrtQueue; 5     queue<int> theSecoundQueue; 6     MyStack() 7     { 8     } 9 10     void push(int x)11     {12         theFisrtQueue.push(x);13     }14 15     int pop()16     {17         int size = theFisrtQueue.size();18         size--;19         while (size--)20         {21             auto tmp = theFisrtQueue.front();22             theFisrtQueue.pop();23             theSecoundQueue.push(tmp);24         }25         int result = theFisrtQueue.front();26         theFisrtQueue.pop();27         while (!theSecoundQueue.empty())28         {29             auto tmp = theSecoundQueue.front();30             theSecoundQueue.pop();31             theFisrtQueue.push(tmp);32         }33         return result;34     }35 36     int top()37     {38         auto top=theFisrtQueue.back();39         return top;40 41     }42 43     bool empty()44     {45         if (theFisrtQueue.empty())46         {47             return true;48         }49         return false;50     }51 };

用了不到一个小时,加油补上吧,虽然真的很累…